Python 中的生日悖论
生日悖论是概率学中一个非常著名的难题。
问题陈述 − 在一个生日派对上,有几个人有相同的生日冲突。我们需要根据有相同生日的人数来找到参加生日派对的大概人数。
在概率中,我们知道得到正面朝上的概率是 1/2,就像我们有一些硬币一样,得到 10 个正面的概率是 1/100 或 0.001。
让我们了解一下这个概念。
两个人生日不同的概率是 $$\frac{364}{365}$$,即 $$\lgroup1-\frac{1}{365}\rgroup$$,在平年。
因此,我们可以说第一个人有特定生日的概率是“1”,而对于其他人来说,它将是不同的,即:
P(不同) = $$1\times\lgroup1-\frac{1}{365}\rgroup\times\lgroup1-\frac{2}{365}\rgroup\times\lgroup1-\frac{3}{365}\rgroup\times\lgroup1-\frac{4}{365}\rgroup...$$
因此,
P(相同) = 1 − P(不同)
例如,概率为 0.70 时,有相同生日的人数。
N = √2 × 365 × log(1-1/p)
N = √2 × 365 × log(1-1/0.70) = 30
因此,有相同生日的人的大致总数是 30。
示例
import math def findPeople(p): return math.ceil(math.sqrt(2*365*math.log(1/(1-p)))) print(findPeople(0.70))
输出
运行以上代码将生成以下输出:
30
广告