gpt4 book ai didi

python - Python中的生日悖论与蒙特卡罗方法?

转载 作者:行者123 更新时间:2023-12-01 07:12:26 25 4
gpt4 key购买 nike

尝试使用蒙特卡罗方法找到“进入”一个房间所需的最少人数,以使两个人生日相同的概率至少为 50%(众所周知的解决方案是 23 人,但是我似乎找不到逻辑或实现中的错误)

最佳答案

错误在于表达您如何查找现有日期:

if date in [dates]:

我们以这样的情况为例:您已经找到了日期 3 和 15,并且您刚刚又画了一个 15 岁的生日。该检查语句的计算结果为

if 15 in [ [3, 15] ]:

这是错误!右边的表达式有一个元素,一个列表。整数 (15) 和列表 ([3, 15]) 不可能相等,因此检查总是会失败。相反,请使用 in 检查,如教程中所示:

if date in dates:

输出:

double birthday 1
double birthday 2
double birthday 3
double birthday 4
double birthday 5
double birthday 6
double birthday 7
double birthday 8
double birthday 9
double birthday 10
double birthday 11
double birthday 12
double birthday 13
13.0

是的,您的代码中还有一些错误。您打印了一个计数器而不是重复的日期,并且每次循环都重置 counter,因此您的最终比例始终除以 1

修复这些问题后,输出将如下所示

double birthday 204
double birthday 40
double birthday 268
double birthday 260
double birthday 188
double birthday 136
double birthday 324
0.07

最后,您的问题描述表明,当您发现重复项时,您将退出循环。正如上面的输出所示,这不是您正在做的事情。为此,您需要一个 break 语句。

关于python - Python中的生日悖论与蒙特卡罗方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58141936/

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