どうやら私は実際には、多くの試行 (5000) にわたって誕生日をランダムに割り当てる配列を作成することを想定していたようです。次に、2 ~ 50 人の誕生日が少なくとも 2 回あるたびにカウントアップし、結果を 5,000 で割っておおよその確率を取得するとします。ループが台無しになっていると思いますので、フィードバックをお願いします。コードではなく、何がうまくいかないのか、どのように台無しにしたのかを正確に理解したいと思います。
int main()
{
const int trials(5000);
double total;
int count(0), birthdays[49];
srand(time(NULL));
for (int i = 2; i <= 50; i++)
{
for (int k = 0; k < trials; k++)
{
fillUp(birthdays, 49);
for (int j = i + 1; j <= 50; j++)
{
if (birthdays[i] == birthdays[j])
{
count += 1;
}
}
}
total = count / 5000.0;
cout << "For " << i << " the probability is " << total << endl;
}
return 0;
}
void fillUp(int birthdays [], int size)
{
for (int i = 0; i < size; i++)
{
birthdays[i] = rand() % 365 + 1;
}
}
出力:
For 2 the probability is 0.1286
For 3 the probability is 0.2604
...
...
For 49 the probability is 3.9424
For 50 the probability is 3.9424
どんな助けでも本当に感謝しています。