gpt4 book ai didi

c++ - 陈述/计算的生日悖论

转载 作者:搜寻专家 更新时间:2023-10-31 01:07:50 28 4
gpt4 key购买 nike

显然,我实际上是想创建一个数组,在多次试验 (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

非常感谢任何帮助。

最佳答案

问题不在于 C++ 代码;你只是在数学上打错了字。应该是:

power = (num * (num - 1.0) / 2.0);
chance = 1.0 - pow(constant, power);

关于c++ - 陈述/计算的生日悖论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18819740/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com