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+ 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告