生日悖論:為什麼只要 23 個人就可能有人同一天生日

2014 年世界盃,記者檢查了全部 32 支球隊。每支球隊恰好有 23 名球員,而在 32 隊中有 16 隊,也就是一半,至少有兩名球員同一天生日。沒有人刻意安排這件事。這就是 23 這個數字會做的事。
這就是生日悖論:在 23 個人的房間裡,有人同一天生日的可能性比沒有更大。生日有 365 種可能,人卻只有 23 個,這個說法聽起來荒謬,而這種反應幾乎人人都有。但這個結果不是把戲,不是統計幻覺,也不依賴細微的但書。它是一個簡短的計數論證,而一旦你看出直覺做的是哪一種計數、而不是正確的那一種,這個悖論就會化解成幾乎顯而易見的事。
謹慎地陳述這個主張
取 23 個人,他們的生日互相獨立,且落在 365 天中任何一天的機率都相同,暫時忽略 2 月 29 日。主張是:
至少有兩個人同一天生日的機率是 50.7%,比擲硬幣猜中的機會略高一點。
有兩個細節很重要。第一,這個主張說的是任意兩個人相同,而不是和某個特定的人相同。第二,「同一天生日」指的是一年中的同一天,例如 3 月 14 日,而不是同年同月同日。這兩個細節聽起來都不重要。但正如我們將看到的,其中一個就是整個悖論的所在。
證明只是計數
直接問「有人和某人相同的機率是多少」,很難正面處理,因為撞期可以用許多互相重疊的方式發生。機率論對此有標準的做法:先計算什麼都不發生的機率,再用 1 去減。想從頭了解這個做法為什麼合理,請見直覺理解機率。
算出機會的數量:23 個人組成 253 個配對
同一天生日是一對人的性質。有 23 個人時,不同配對的數量是 。每一對單獨來看,撞期的機率是 ,非常小。但這場樂透有 253 張彩券,不是 22 張,更不是 1 張。這個數量是整個主題的核心。
計算所有生日都不同的機率
讓大家排成一列,一次加入一個人。第一個人可以隨意選一天:機率是 365/365。第二個人要避開撞期,必須落在剩下 364 天中的任何一天:機率是 364/365。第三個人必須避開兩個已被占用的日子:363/365。每一位新來的人要多避開一天,第 23 位必須避開 22 個已被占用的日子:343/365。由於生日互相獨立,23 個人全都不同的機率,就是所有這些分數的乘積。
乘出來,再取補集
這是完全沒有人撞期的機率。所以至少有一個人同一天生日的機率是 ,剛好超過二分之一。在 22 個人時,同樣的乘積是 47.6%,仍低於一半。這條線恰好在 23 個人時被跨過。
這就是整個證明:數一數配對,看出撞期為什麼合理,再把 23 個分數乘起來,看出它究竟有多合理。沒有進階的工具,沒有任何事要靠信念接受。每一步都能用計算機驗證。
而且曲線繼續快速攀升。30 個人時,撞期的機率是 70.6%。50 個人時是 97.0%。70 個人時是 99.9%:在一年中還有 295 天沒被碰到的時候,有人同一天生日幾乎已是必然。
直覺哪裡出錯
生日悖論總是穩定地騙過人,而且騙的方式明確可診斷:他們回答了錯誤的問題。
聽到這個謎題,你的腦袋會悄悄換成一個以你為主角的版本。這裡有人和我同一天生日的機率有多大?這個問題的答案確實很小。在 23 個人的房間裡,只有另外 22 個人,每一個人和你相同的機率是 ,有任何人和你相同的總機率大約是 6%。如果謎題問的是你的生日,懷疑者就是對的。
但謎題問的是任何撞期。你對上其他每個人:22 對。但也有第 2 個人對上第 3 個人、第 7 個人對上第 19 個人,以及所有完全不牽涉到你的其他組合:另外 231 對,總共 253 對。直覺只數得到自己從內部能想像的那 22 次比較,在結構上看不到自己不在其中的 231 次。悖論並不是機率表現得很奇怪,而是 23 個人的房間裡的比較次數,是任何一個人所經歷的十一倍。
有一個整齊的方式可以看出這個差距有多大。要讓某人與你本人同一天生日的機率達到 50%,其他 22 個人遠遠不夠:除了你自己以外,你需要 253 個人。要和一個固定的生日撞期所需的其他人數,與 23 個人之間的配對數相同。這不是巧合,而是兩個問題用同樣的算術解決,它精確地衡量了「我的生日」這種說法把情況低估了多少。
讓答案誠實的但書
上述計算假設有 365 個機率相同的生日,且沒有閏日。這兩個假設在真實世界中都不成立,所以問 50.7% 能否經得起現實的考驗,是合理的。
它經得起,而且事實上現實還幫了忙。把 2 月 29 日加進來,當作罕見的第 366 天,會讓機率略微降低,但幅度太小,不足以把門檻從 23 移開。生日不均勻則往另一個方向推:真實的出生資料顯示有季節性的高峰,某些月份穩定地比其他月份擁擠。任何這類不均勻都會讓碰撞更容易發生,因為把機率集中到熱門日子上,正是碰撞賴以為生的條件。均勻的模型是這個悖論最困難的設定,卻仍然超過了 50%。
這種穩健性值得停下來想一想,因為它與帶有悖論色彩的謎題通常的行為正好相反。例如蒙提霍爾問題就以對細節非常敏感聞名:改變主持人知道什麼,答案就會改變。生日悖論是那個穩固的兄弟。每一個偏離教科書假設的現實情形,都會把機率往上推,所以這份驚訝經得起每一個吹毛求疵。
從派對把戲到破解雜湊函數
生日悖論當成派對賭局就已經物有所值,但它也有一份嚴肅的工作。在密碼學中,它決定了尋找碰撞的代價,一整套攻擊策略就以它命名。
雜湊函數把任何輸入壓縮成固定大小的指紋,而安全性通常取決於沒有人找得到兩個不同的輸入卻有相同的指紋。假設指紋是 128 位元,也就是有 2 的 128 次方種可能,是個天文數字。猜出一個能對應到某個特定指紋的輸入,確實需要大約 2 的 128 次方次嘗試,永遠無望。但只想找到任何碰撞、也就是任意兩個結果一致的輸入的攻擊者,玩的是生日遊戲:產生隨機輸入,依照平方根法則,大約在 2 的 64 次方次嘗試後預期會出現碰撞。這就是生日攻擊,而 2 的 64 次方雖然是個很大的數,卻不安全;意志堅決的攻擊者已經跨過它了。
換句話說,這個悖論把雜湊的有效強度以位元計減少了一半。這就是為什麼想要 128 位元抗碰撞性的密碼學家,會使用 256 位元輸出的雜湊:2 的 256 次方的平方根是 2 的 128 次方,連生日捷徑也遙不可及。同一個模式既決定了你派對要邀請多少人,也決定了保護你銀行連線的位元數,而且兩次用的都是同一套計算。
動手試試,因為不花任何成本
就像最好的機率結果一樣,這個結果很便宜就能測試。任何大約 25 人的團體都可以:一間教室、一層辦公室、一份球隊名單、一份婚宴賓客名單。問每個人的生日,看看有沒有撞期。當然,單一團體無法證明什麼。主張是 50.7%,不是確定,所以這個賭局幾乎有一半的時間會輸。
有說服力的做法是重複。運動隊伍的名單特別適合這件事,這就是為什麼世界盃一直出現在生日悖論的文章裡:23 人的球隊,就是恰好在門檻大小的實驗,早已組好而且公開。查十支球隊,你應該預期大約五支會有撞期。或者用模擬:幾行程式碼,從 1 到 365 隨機分配 23 個數字並檢查有沒有重複,跑一萬次,結果與 0.507 的差距會在一個百分點以內。把 23 個分數相乘的論證做出了精確的預測,世界一再與它吻合,很少有更快的方式能讓人感受到機率變得真實。
這裡面的禪意
生日悖論之所以長存,是因為它是一種普遍失誤模式的完美縮影。直覺從單一的觀點評估情境,也就是你自己的觀點,而在組合式的情境中,單一觀點的偏差會隨人群增加而成長。隨機性本身沒有任何不守規矩。錯誤完全在於哪一個問題被悄悄地回答了。
而解藥和機率論中一向的解藥相同:拒絕猜測,去計數。數一數配對,合理性就出現了。把分數乘起來,精確的數字就掉出來了。同樣的計數隨後原封不動地出現在密碼系統的設計中,這是整個主題安靜的一課:一個機率論證並不知道自己是被用在酒吧賭局,還是被用來保護網路安全。
二十三個人。兩百五十三次機會。這個房間從來沒有看起來那麼空。
常見問題
- 什麼是生日悖論?
- 這個事實是:在只有 23 個人的團體中,至少有兩個人同一天生日的機率略高於 50%。30 個人時約為 71%,50 個人時約為 97%,70 個人時約為 99.9%。它被稱為悖論,並不是因為數學有爭議,而是因為 23 這個數字讓人覺得實在太小。這個結果來自普通的機率,做法是把每一對人都算進去,而不是只拿大家跟一個固定的生日比較。
- 為什麼生日悖論的關鍵數字是 23?
- 因為 23 個人會組成 253 個不同的配對,而每一對都是一次新的撞期機會。全部 253 對都避開撞期的機率,恰好在 23 個人時降到二分之一以下:沒有人撞期的機率約為 49.3%,所以有人同一天生日的機率約為 50.7%。數字裡還藏著一個漂亮的巧合:365 乘以 2 的自然對數,幾乎剛好等於 253,這就是五五波的分界點會落在這裡的原因。
- 為什麼生日悖論讓人覺得這麼不對勁?
- 因為直覺回答的是另一個問題。聽到這個謎題時,你會本能地想像有人和自己的生日相同,而在 23 個人的房間裡,這樣的機會只有 22 次,機率大約 6%。但真正的問題是任何兩個人是否相同,這牽涉到 253 個配對,其中大多數跟你完全無關。直覺只追蹤它能想像的那 22 次比較,完全漏掉了自己不在其中的 231 個配對。
- 密碼學中的生日攻擊是什麼?
- 這是直接以這個悖論命名的攻擊策略。雜湊函數的設計目標,是讓人很難找到兩個不同的輸入卻得到相同的輸出。生日悖論說明,隨機值之間的碰撞,大約在可能值數量的平方根次之後就會出現,而不是要用掉全部的數量。所以輸出有 2 的 128 次方種可能的雜湊,大約只要 2 的 64 次方次嘗試就能被攻擊,這就是密碼學家設定雜湊輸出長度,要讓連平方根都遙不可及的原因。
- 生日悖論有考慮閏年和生日分布不均的情形嗎?
- 標準的計算假設有 365 個機率相同的生日,並忽略 2 月 29 日,因為它太少見,幾乎不影響結果。真實的生日並非完全均勻,在許多國家有季節性的高峰,但這只會讓悖論更成立:生日分布的任何不均勻,都會讓碰撞更容易發生,而不是更不容易。所以 23 個人時的 50.7% 在實務上是下限,真實世界的機率會再高一點。



