高點研究所
首頁商研所許誠哲 生日問題的機率計算
篇名
生日問題的機率計算
作者
許誠哲
說明
發佈時間:20230220

生日問題 (Birthday problem) 是機率論中的經典例題,簡單的說就是在n個人當中,有至少 2 位在同一天生日的機率。在求學階段,由於班上的人數通常在 30 人左右,因此不太容易會遇到有人與自己同一天生日的情況。但隨著人數越來越多,而一年的生日可能只有 365 天 ( 不考慮閏年的狀況下 ), 這個機率理論上會隨著人數增加而增加。當然,若人數大於 365 日,則至少會有 2 個人會同一天生日,因此這個問題將限定

在計算機率時,因為直接計算機率不是很容易窮舉,因此計算補集的機率比較容易計算,意即用 1 扣掉所有人生日都在不同天的機率。假設 n = 2, 則 2 個人生日不同天的機率為

分母為 2 個人生日的可能組合數,分子為 2 個人不同天生日的可能組合數。分子的邏輯為給定第 1 個人先選擇生日,一共有 365 個選擇,而第 2 個人因為不能選擇與第 1 個人同一天,因此只剩 364 個選擇。根據相同邏輯,n個人生日都不相同的機率為

舉例來說,若班上有 30 個人,則這 30 個人生日都不相同的機率為

因此至少有 2 人有相同生日的機率為 1 - 0.2937 = 0.7064。在熱騰騰的 112 年台北金融所中,也考到了生日問題,其問題大意為 n 應該至少為多少才可使得至少 2 人有相同生日機率超過 0.9, 即為求解 n使得

這個問題在使用一般工程計算機也很難求解,大多是以程式語言以遞迴方式求解,意即從 n = 1 開始代入,若不滿足不等式則將代入的 n 再加上 1 之後嘗試直到不等式成立為止。其 R 語言的程式範例如下

可發現所求即為 n = 41。其中因為 365! 的數字太大,R 語言無法處理,因此改為計算

關鍵詞
機率計算、生日的機率、程式語言
刊名
商研所許誠哲