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
廣告