不可思議的數:生日悖論

黃志斌發表於2019-10-04

《不可思議的數》第23章“生日悖論”:

在一場英式足球賽裡,通常會有23個人在賽場上:兩支參賽隊伍各有11名球員,外加1名裁判。…… 在這23人裡,2人或2人以上具有相同生日的概率是多少?

……

現在,規律很清楚了。當第 k 個人上場時,所有 k 個人生日不相同的概率是

當 k= 23 時,它的結果等於 0.492703,比 1/2 略小。因此,至少有兩個人生日相同的概率是 1 - 0.492703,它等於 0.507297,比 1/2 略大。

……

木星上的生日

我們算出 23,是因為一年裡有 365 天。在這裡 365 並沒有特殊的數學意義,它源自天文學上的規定。就數學而言,我們應該分析一個更一般化的問題,這在個問題裡,一年的天數應該是任意的。

讓我們先算算泡泡猴的生日問題。…… 所以,一個“木星年”大約包含了 10 477 個“木星日”。

類似計算表明,假設有 121 只泡泡猴(每隊 40 只,一共 3 個隊,再加上 1 名裁判)參與球賽時,至少有 2 只泡泡猴生日相同的概率會略大於 1/2。事實上,

而當有 120 只泡泡猴時,生日相同的概率是 0.495455。

注意,上面的公式中連乘積最後一項的分子 10356 應該是 10357,因為它應該等於 10477 - k + 1 = 10477 - 121 + 1 = 10357。

我們可以寫一個函式 f(n,k) 來計算當一年有 n 天,k 個人中至少有 2 個人的生日相同概率。在 PARI/GP 中可以這麼寫:

$ gp -q
? f(n,k)=1.0-prod(i=1,k-1,(n-i)/n)
? f(365,23)
0.50729723432398540722541722833703250024
? f(10477,121)
0.50123411013126407848664452412022799823
? f(10477,120)
0.49545522562955042486285359459376544728

計算結果和書上給出的相符。書上繼續說:

當一年的天數不同時,木星上的數學家們實在不想重複計算這一概率,於是,他們發展出一個通用公式。這個公式並不十分精確,卻是一個非常好的近似。它回答了一個一般化的問題:如果可以選取 n 個日期,必須要有多少實體,才能使其中至少兩個實體具有相同生日的概率超過 1/2?

但木星生物不知道,從尼波布拉科特(Neeblebruct)星球來的一支隱形外星入侵者艦隊已經繞著木星轉悠了半個木星世紀。為了解開一個祕密,他們經年累月地綁架了尼波布拉科特組(一組等於 42 個)木星數學家。外星入侵者碰到的問題是:一個尼波布拉科特年恰好有 424 = 3 111 696 尼波布拉科特天,但是沒人能算出 121 該被哪個數替代才是正確的。

接下來,書上給出了一個近似公式來解決這個問題。

……(欲知這個公式是什麼,請購買《不可思議的數》)
然而,當 n 很大時,這個公式就不那麼精確了。當把它應用到尼波布拉科特年,即 n = 3 111 696 時,根據公式可知
k = 2076.95
(向上)取整後得到 2077。但通過詳細計算,這時
P(k) = 0.4999
它比 1/2 略小。正確的結果應該是 2078,因為這樣才會有
P(k) = 0.5002

注意,這裡的 0.5002 應該是 0.5003,見後面的計算。還要注意,這裡(書上第314頁)的 P(k) 表示 k 個人中至少有兩個人具有相同生日的概率,而本文開頭(書上第311頁)的 P(k) 表示所有 k 個人生日都不相同的概率。如果把前者稱為 P2(k),後者稱為 P1(k),則:P2(k) = 1 - P1(k)。

利用 PARI/GP,寫出一個函式 g(n) 來準確計算需要多少個實體才能滿足要求是非常簡單的:

? g(n)=z=1;k=0;for(i=1,n,if(z<=1/2,k=i;break);z*=(n-i)/n);k
? g(365)
23
? g(10477)
121
? g(42^4)
2078

這個結果與書上給出的相符。繼續驗證書上的最後兩個 P(k):

? f(42^4,2077)
0.49992646809781378219275113896957663584
? f(42^4,2078)
0.50026025800716252344973307290025630034

可見書上最後一個 P(k) 有誤。

相關文章