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

更新于: 2021-02-05

1K+ 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告