題目:假設每人的生日在一年365天是等可能的,那麼N個人有任意兩人生日相等的概率是多大。
解答:
首先,算出N個人生日的所有可能性,也就是樣本空間,為N個365相乘,即365**N,我們記這個數為A。
接著算出任何兩個人生日的各不相同事件的樣本數量,365*364*363*...*(365-N+1),我們記這個數為B。
然後通過算補集的方法,1-B/A 得出N個人有任意兩人生日相等的概率。
python3實現:
算法十分清晰,我們來看一下代碼:
我們這裡使用了可變參數,可以一次輸入多種人數情況下概率的情況。下面是返回的字典,人數和概率對應的情況。
我們來看格式化輸出後結果
我們看到50個人中有兩個人生日相同的概率達到了97%,這就是為什麼一個50個人的班級幾乎一定會有兩個人生日相同,以前感到很驚奇的“同生緣”,其實是很平常的情況。這就是那句諺語的體現:seeing is not believing。
閱讀更多 黑客小學生藍薩節 的文章