【发布时间】:2021-11-27 12:33:26
【问题描述】:
生日悖论是每个人在任意给定的 365 天生日的概率都是相等的。我们开始在房间中添加人员。 2 个人在同一天过生日的概率是房间里人数的函数?我写的代码如下:
import numpy as np
import matplotlib.pyplot as plt
x=[0]
y=[0]
for j in range(1000):
if j!=0:
freq = []
L1 = list(np.random.randint(low = 1, high=366, size = j))
result = list((i, L1.count(i)) for i in L1)
for a_tuple in result:
freq.append(a_tuple[1])
print(freq)
rep = j - freq.count(1)
prob = rep/j
y = y + [prob]
x = x + [j]
print(prob)
plt.plot(x,y)
在L1 = list(np.random.randint(low = 1, high=366, size = j)) 中,我选择某人过生日的日期,在result = list((i, L1.count(i)) for i in L1) 中,我计算每天生日的频率。整个事情都是循环的,以解释越来越多的人。
在下面的 for 循环中,我隔离了唯一事件并找到重复并将值存储在 rep 中。 接下来,我将概率计算为共享生日的人的比例,并将它们绘制为数字的函数。 然而,这个问题需要我找出只有一个共同生日的概率。我该如何计算?我想我必须循环这整个事情来进行多次试验,但这只是给出了一个准确的解决方案,同一程序的变化更少。目前,我认为我的程序提供了共享生日的人的一小部分。
【问题讨论】:
-
所以,为了确保,你要计算以下;如果 i=1..1000 人在同一个房间,那么至少 2 个人生日相同的概率是多少(作为 i 的函数)?是否必须模拟,还是允许计算?
-
我所做的是我发现 1000 人中有多少人共享生日。问题是给定 N,2 人生日相同的概率是多少。它没有说明哪个 2,所以如果做得正确,大约 n=23,有 50% 的机会 2 共享生日。它在 200 时接近 99%。分析解决方案是已知的,甚至在 wiki 链接中给出。它需要由 monte carlo
-
如果房间里有超过 366 人,则概率为 1(因此模拟超过 366 人没有意义)。必须是正好两个人还是至少两个人?
标签: python montecarlo birthday-paradox