生日問題是一個有趣的數學現象，它探討「需要多少人聚在一起，才能讓其中至少有兩人同一天生日的機率超過一半？」 答案令人意外，只需要 23 人。這個問題有時被稱為「生日悖論」，不過這其實並不是真正的悖論，只是因為結果違反了一般人的直覺。大多數人會認為 23 人中兩人同生日的機率應該遠小於 50。 它衍生出的數學理論被用於設計一種名為「生日攻擊」的密碼破解方法。 解釋 生日問題可理解成盲射打靶問題。首先計算：23 人皆不同生日的機率是多少？可想像一間有 23 人進入的房間，這 23 人依次進入，每個進入的人的生日都與房裡其他人的生日不同的機率依次是 1、frac 364365、frac 363365、frac 362365、frac 361365 等。先入房的人的生日皆不同的機率很高，前五個是 1frac 364365frac 363365frac 362365frac 361365973；而最後入房的幾人就完全不同，他們入房且找不到同生日者的機率是 frac 345365、frac 344365、frac 343365。這種機率可看成對靶的盲射：靶有 365 格，其中 17 個左右黑格，其餘白格。假設每槍必中靶並且分佈符合幾何概型的話，連射 12 槍左右任何一發都沒有擊中黑格的機率（投射於房間裡的人生日皆不同）十分微小。 理解生日問題的關鍵在於考慮上述 依次入房 模型中最後幾個入房的人 全都沒碰到同生日的人 機率多少。 簡言之，大多數人之所以會認為 23 人中兩人同生日的機率應該遠遠小於 50，是因為將問題理解為 其他 22 人與你同生日的機率，而非問題真諦 23 人中兩兩之間存在生日相同。如果有考慮這點，直覺上會將原來的機率乘以 23（注意：此演算法並不正確），則會意識到機率很大。 機率估計 假設有 n 個人在房內，如果要計算兩人同生日的機率，在不考慮特殊因素如閏年、雙胞胎的前提下，假設一年 365 日出生機率平均分佈（現實的出生機率不是平均分佈）。 計算機率的方法是，首先找出 p（n）表示 n 人中，每人生日都不同的機率。假如 n 365，根據鴿巢原理其機率為 0，假設 n 365，則機率為 bar p n 1 cdot left 1frac 1365rightcdot left 1frac 2365right cdots left 1frac n1365right frac 365365 cdot frac 364365 cdot frac 363365 cdot frac 362365 cdots frac 365n1365 因為第二人不能跟第一人同生日（機率是 364365），第三人不能跟前兩人同生日（機率是 363365），依此類推。用階乘可寫成如下形式 365 over 365n 365n p n）表示 n 個人中至少兩人同生日的機率 p n 1 bar p n1 365 over 365n 365n n365，根據鴿巢原理，n 大於 365 時機率為 1。 n 是 23 時機率約 0507。其他人數的機率用上面演算法可得出： n p（n） 10 12 20 41 30 70 50 97 100 9999996 200 999999999999999999999999999998 300 1 （71073） 350 1 （310131） 366 100 注意所有人都是隨機選出：作為對比，q n 表示房間中有 n1 人，當中與特定人（比如你）同生日的機率： q n1 1 left frac 364365 rightn 當 n 22 時機率只有大約 0059，約高於十七分之一。如果 n 人中有 50％機率存在某人跟你同生日，n 至少要達到 253。注意這數字大大高於 3652 1825；究其原因是因為房間內可能有些人同生日。 數學論證（非數字方法） 保羅哈莫斯在自傳中認為生日問題只用計算數值來解釋是種悲哀，所以給出了一種概念數學方法的解釋（儘管這方法有一定的誤差）：乘積 prod_k1n1left 1k over 365right 等於 1－p（n），因此關注第一個 n，欲使乘積小於 12。由平均數不等式可知： sqrt n1prod_k1n1left 1k over 365right 1 over n1sum_k1n1left 1k over 365right 再用已知的 1 到 n－1 所有整數和等於 n（n－1）2，然後用不等式 1－x ex，可得到： prod_k1n1left 1k over 365right left 1 over n1sum_k1n1left 1k over 365rightrightn1 left 1n over 730rightn1left en730rightn1en2n730 如果僅當 n2n730log_e 2cong 505997dots 最後一條表示式的值會小於 05。其中 loge 表示自然對數，略小於 506，如果取 n2－n506 就得到 n＝23。 在推導中，哈莫斯寫道： 然而哈莫斯的推論只顯示至少超過 23 人就能保證平等機會下的生日匹配。因為不知道給出的不等式有多強（嚴格、清晰），因此無法藉此計算過程確定 n＝22 是否能讓機率過半；相反，現在任何人都可用 Microsoft Excel 等個人電腦程式在幾分鐘內把整幅機率分佈圖畫出來，對問題答案很快就有通盤掌握，一目瞭然。 泛化和逼近 生日問題可以推廣一下：假設有 n 人，每人都隨機從 N 個特定的數中選一個數出來（N 可能是 365 或其他正整數）。 p（n）表示有兩個人選擇了同樣的數字，這機率多大？下面的逼近公式可以回答這個問題 p nsim 11exp n22N。 泛化 下面泛化生日問題：給定從符合離散均勻分佈的區間 1d 隨機取出 n 個整數，至少 2 個數字相同的機率 p（nd）有多大？類似的結果可以根據上面的推導得出。 p nd begin cases 1prod_k1n1left 1k over dright nle d 1 n d end cases p nd approx 1 en n12d n pdapprox sqrt 2dlnleft 1 over 1pright1 over 2 p nd 1 left frac d1d rightn 反算問題 反算問題可能是： 對於確定的機率 p 找出最大的 n（p）滿足所有的機率 p（n）都小於給出的 p，或者 找出最小的 n（p）滿足所有的機率 p（n）都大於指定的 p。 這問題有如下逼近公式： n papprox sqrt 2cdot 365lnleft 1 over 1pright1 over 2。 舉例 逼近 逼近 逼近 估計 N 365 估計 N 365 估計 N 365 估計 N 365 p n 推廣 nN 365 n p（n） n p（n） 001 （014178 N）05 320864 3 000820 4 001636 005 （032029 N）05 661916 6 004046 7 005624 01 （045904 N）05 927002 9 009462 10 011695 02 （066805 N）05 1326302 13 019441 14 022310 03 （084460 N）05 1663607 16 028360 17 031501 05 （117741 N）05 2299439 22 047570 23 050730 07 （155176 N）05 3014625 30 070632 31 073045 （正確值：n29 n30） 08 （179412 N）05 3477666 34 079532 35 081438 09 （214597 N）05 4149862 41 090315 42 091403 （正確值：n40 n41） 095 （244775 N）05 4726414 47 095477 48 096060 （正確值：n46 n47） 099 （303485 N）05 5848081 58 099166 59 099299 （正確值：n56 n57） 注意：某些值有色，說明逼近不總是正確。 經驗性測試 生日問題可以用計算機程式碼經驗性模擬 days 365 numPeople 1 prob 00 while prob 05 begin numPeople numPeople 1 prob 1 1probdaysnumPeople1 days print Number of people numPeople print Prob of same birthday prob end 生日問題也可以用 Microsoft Excel Spreadsheet 模擬 人數 人數對應的生日相同的機率 1 1 1PERMUT 365A1POWER 365A1 2 A11 1PERMUT 365A2POWER 365A2 3 A21 1PERMUT 365A3POWER 365A3 TABLE 當行數達到 23（即人數），可看到機率結果開始過半。 應用 生日問題普遍的應用於檢測雜湊函式：N 位長度的雜湊表可能發生碰撞測試次數不是 2N 次而是隻有 2N2 次，這結論用在破解密碼學雜湊函式的生日攻擊中。 生日問題隱含的理論已經在 Schnabel 1938 名字叫做捉放法（capturerecapture）的統計試驗得到應用，來估計湖的魚數。 不平衡機率 就像上面提到的，現實世界人口的生日並非平均分佈，這種非均衡生日機率問題也已解決。 近似匹配 此問題的另外一個泛化是求在人中有兩人的生日同在日曆天內的機率。假設有個同等可能的生日。M Abramson and W O J Moser 1970 More Birthday Surprises American Mathematical Monthly 77 856858 begin align p nkm 1 frac m nk 1 mn1 bigl m n k1bigrend align 能找到兩個人生日相差天或更少的機率高於 50 所需要的人數： for 0 23 1 14 2 11 3 9 4 8 5 8 6 7 7 7 只須隨機抽取 7 人，找到兩人生日相差一週內的機率就會過半。 其它相關生日錯覺機率問題 星期二男孩問題：一個兩孩家庭有一個男孩，他是星期二出生的，那麼另一個孩子也是男孩的機率是多少？答：1327 參考 Zoe Emily Schnabel The estimation of the total fish population of a lake（某湖中魚類總量估計），美國數學月刊 45（1938 年） 348352 頁 M Klamkin，D Newman Extensions of the birthday surprise（生日驚喜的擴充） Journal of Combinatorial Theory 3（1967 年）279282 頁。 D Blom a birthday problem 生日問題，美國數學月刊 80（1973 年）11411142 頁。這一論文證明了當生日按照平均分佈，兩個生日相同的機率最小。 相關條目 機率論 生日 生日攻擊 雜湊函式 參考文獻 外部連結 httpwwwefghcommathbirthdayhtm httpwwwteamtencomlawrencepuzzlesbirthday_paradoxhtml httpsciencehowstuffworkscomquestion261htm httpmathworldwolframcomBirthdayProblemhtml httpwwwatriumtechcompongskornbirthdayparadoxbirthdayparadoxhtm Category 機率論悖論 Sheng Category 生日