<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>組合 on kenji.blog</title><link>http://kenji.blog/zh-tw/tags/%E7%B5%84%E5%90%88/</link><description>Recent content in 組合 on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>zh-tw</language><copyright>kenjinote</copyright><lastBuildDate>Thu, 10 Sep 2026 00:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/zh-tw/tags/%E7%B5%84%E5%90%88/index.xml" rel="self" type="application/rss+xml"/><item><title>生日悖論：只要23人就有超過50%機率？欺騙直覺的「組合」魔法</title><link>http://kenji.blog/zh-tw/p/birthday-paradox/</link><pubDate>Thu, 10 Sep 2026 00:00:00 +0900</pubDate><guid>http://kenji.blog/zh-tw/p/birthday-paradox/</guid><description>&lt;img src="http://kenji.blog/p/birthday-paradox/img/birthday_paradox.jpg" alt="Featured image of post 生日悖論：只要23人就有超過50%機率？欺騙直覺的「組合」魔法" />&lt;h2 id="1-直覺測試聚集多少人機率才會超過50">1. 直覺測試：聚集多少人機率才會超過50%？
&lt;/h2>&lt;p>某個派對會場聚集了一群人。
這時候，您認為要讓**「會場中，至少有一組生日（月和日）完全相同的兩人的機率超過50%」**，最少需要多少人？（※排除閏年，一年以365天計算，並假設每天作為生日的機率相等）。&lt;/p>
&lt;p>人類的直覺往往會這樣計算：
「一年有365天這麼多。把人隨機放入365個格子中，如果要發生重複，至少也需要180人左右吧。保守估計，沒有個50到60人，機率應該不到一半吧？」&lt;/p>
&lt;p>然而，數學算出的正確答案，竟然只有**「23人」**。
如果是一個學校班級（約30人到40人），有生日相同的配對存在的機率，會暴增到約70%到89%。如果有50人，這個機率更會高達97%，變成「沒有人生日相同反而比較稀奇」的狀態。&lt;/p>
&lt;p>為什麼我們的直覺與現實的機率會有如此巨大的落差呢？&lt;/p>
&lt;hr>
&lt;h2 id="2-直覺出錯的原因我與某人和某人與某人的差異">2. 直覺出錯的原因：「我與某人」和「某人與某人」的差異
&lt;/h2>&lt;p>這個問題中，直覺會出錯的最大原因，是因為我們會在無意識中思考**「有人的生日和特定一人（例如自己）相同的機率」**。&lt;/p>
&lt;p>當您走進會場，想尋找「有沒有人的生日和我一樣呢？」時，在23人之中有與您生日相同的人的機率，僅僅只有&lt;strong>約6.1%&lt;/strong>。（要讓這個機率超過50%，實際上需要多達253人）。&lt;/p>
&lt;p>但是，生日悖論所問的，並不是「我與某人」的配對。而是**「會場中所有人的所有可能組合（A先生和B先生、B先生和C小姐、C小姐和A先生……）」**中，只要有一組一致就可以了。&lt;/p>
&lt;div class="mermaid">graph TD
subgraph "直覺的錯覺：以「自己」為中心的比較"
You["自己"] --- P1["A先生"]
You --- P2["B先生"]
You --- P3["C小姐"]
You --- P4["D先生"]
style You fill:#ff9999,stroke:#333,stroke-width:4px
end
subgraph "現實：「所有人與所有人」的交叉比較"
A["A先生"] --- B["B先生"]
A --- C["C小姐"]
A --- D["D先生"]
B --- C
B --- D
C --- D
end&lt;/div>
&lt;p>即便只有4人的小組，以「自己」為中心的比較只有3種，但所有人互相比較的話則有6種（${}_4 C_2 = 6$）。
當人數增加到23人時，配對的組合更是爆炸性地增加到&lt;strong>253種&lt;/strong>（${}_{23} C_2$）。
既然有高達253組配對，其中有一組抽中「365分之1」的機率，是不是就讓人覺得不那麼不可思議了呢？&lt;/p>
&lt;hr>
&lt;h2 id="3-數學的證明使用餘事件的巧妙解法">3. 數學的證明：使用餘事件的巧妙解法
&lt;/h2>&lt;p>要正面計算「至少有一組生日相同的機率」非常困難（因為要考慮只有1組相同、有2組相同、有3個人同一天生日等各種情況，模式太多了）。
因此，我們要使用機率論的基本技巧**「餘事件（Complementary Event）」**。&lt;/p>
&lt;p>餘事件是指「不會發生的機率」。
也就是說，只要計算出**「所有人的生日都不一樣（連一組都沒有重複）的機率」**，再用100%（即1）去減，就能得出我們想求的機率。&lt;/p>
$$ P(\text{至少有2人相同}) = 1 - P(\text{所有人生日皆不同}) $$
&lt;p>那麼，我們想像人們依序進入會場來計算看看。&lt;/p>
&lt;ol>
&lt;li>&lt;strong>第1人&lt;/strong>：不用擔心跟任何人重複。機率是 $\frac{365}{365}$。&lt;/li>
&lt;li>&lt;strong>第2人&lt;/strong>：生日必須和第1人不同。只要在剩下的364天就安全。機率是 $\frac{364}{365}$。&lt;/li>
&lt;li>&lt;strong>第3人&lt;/strong>：生日必須和前2人不同。只要在剩下的363天就安全。機率是 $\frac{363}{365}$。&lt;/li>
&lt;/ol>
&lt;p>將這些機率乘到第 $n$ 人，就能得出所有人的生日都不同的機率 $P(n)'$ 的一般項。&lt;/p>
$$ P(n)' = \frac{365}{365} \times \frac{364}{365} \times \frac{363}{365} \times \dots \times \frac{365 - (n - 1)}{365} $$
$$ P(n)' = \prod_{k=1}^{n-1} \left(1 - \frac{k}{365}\right) $$
&lt;p>因此，所求的「至少有2人具有相同生日的機率 $P(n)$」就會變成以下公式。&lt;/p>
$$ P(n) = 1 - \prod_{k=1}^{n-1} \left(1 - \frac{k}{365}\right) $$
&lt;p>如果將人數 $n$ 代入這個公式，就會發現機率以驚人的速度上升。&lt;/p>
&lt;ul>
&lt;li>當 $n = 10$ 時，機率約為 &lt;strong>11.7%&lt;/strong>&lt;/li>
&lt;li>當 $n = 23$ 時，機率約為 &lt;strong>50.7%&lt;/strong> （在這裡超過了50%！）&lt;/li>
&lt;li>當 $n = 40$ 時，機率約為 &lt;strong>89.1%&lt;/strong>&lt;/li>
&lt;li>當 $n = 70$ 時，機率約為 &lt;strong>99.9%&lt;/strong>&lt;/li>
&lt;/ul>
&lt;div class="mermaid">pie title "聚集23人時的機率"
"有相同生日的配對 (50.7%)" : 50.7
"全部分散不重複 (49.3%)" : 49.3&lt;/div>
&lt;hr>
&lt;h2 id="4-泰勒展開的近似計算">4. 泰勒展開的近似計算
&lt;/h2>&lt;p>要手動計算23次乘法實在太辛苦了，所以讓我們用數學的近似公式來更直覺地理解。&lt;/p>
&lt;p>考慮指數函數 $e^{-x}$ 的泰勒展開式。當 $x$ 夠小時，下列近似式成立。
&lt;/p>
$$ e^{-x} \approx 1 - x $$
&lt;p>將這個公式應用到剛才的各項 $\left(1 - \frac{k}{365}\right)$，
&lt;/p>
$$ 1 - \frac{k}{365} \approx e^{-\frac{k}{365}} $$
&lt;p>將它們全部相乘（根據指數定律會變成相加），
&lt;/p>
$$ P(n)' \approx e^{-\frac{1}{365}} \times e^{-\frac{2}{365}} \times \dots \times e^{-\frac{n-1}{365}} $$
$$ P(n)' \approx \exp\left(-\sum_{k=1}^{n-1} \frac{k}{365}\right) $$
&lt;p>從1到 $n-1$ 的總和是 $\frac{n(n-1)}{2}$ （也就是組合數 ${}_n C_2$），所以
&lt;/p>
$$ P(n)' \approx \exp\left(-\frac{n(n-1)}{2 \times 365}\right) $$
&lt;p>在這個公式中，我們要求當機率為 50% ($0.5$) 時的 $n$。
&lt;/p>
$$ 0.5 = e^{-\frac{n(n-1)}{730}} $$
&lt;p>
將兩邊取自然對數（$\ln 0.5 \approx -0.693$）。
&lt;/p>
$$ -0.693 = -\frac{n(n-1)}{730} $$
$$ n(n-1) = 0.693 \times 730 \approx 505.89 $$
&lt;p>如果近似為 $n^2 \approx 506$，則 $n = \sqrt{506} \approx 22.49$
完美地推導出了 &lt;strong>$n \approx 23$&lt;/strong> 這個答案！&lt;/p>
&lt;hr>
&lt;h2 id="5-日常生活的應用與雜湊碰撞">5. 日常生活的應用與「雜湊碰撞」
&lt;/h2>&lt;p>這個悖論並不只是宴會上的話題。在支撐現代IT社會的&lt;strong>密碼學與資訊安全&lt;/strong>中，它扮演著極為重要的角色。&lt;/p>
&lt;p>在電腦系統中，為了快速確認密碼或檔案的同一性，我們會使用一種稱為「雜湊函數（Hash Function）」的機制。雜湊函數無論輸入什麼資料，都會回傳固定長度的隨機字串（雜湊值）。
然而，這種雜湊值偶然變得相同的現象，就被稱為**「雜湊碰撞（Hash Collision）」**。&lt;/p>
&lt;p>雜湊碰撞正是以和生日悖論相同的原理發生。
違反了人類直覺中「雜湊值的種類是天文數字，所以應該幾乎不會發生碰撞」的想法，攻擊者隨機產生大量資料來找出「某個和某個一致（生日重複）的配對」，其實比想像中容易得多。&lt;/p>
&lt;p>這被稱為**「生日攻擊（Birthday Attack）」**。
設計安全系統的工程師們，就是以這個「碰撞發生的速度遠比直覺更快」的數學事實為前提，將雜湊值的長度設定得非常長，藉此確保安全性。&lt;/p>
&lt;h2 id="6-總結人類直覺的極限">6. 總結：人類直覺的極限
&lt;/h2>&lt;p>生日悖論是一個完美的例子，顯示了&lt;strong>人類的直覺對於「指數性增長」或「組合的爆炸」是多麼地脆弱&lt;/strong>。&lt;/p>
&lt;p>我們雖然擅長處理線性（加法性）的增長，但卻無法在腦內模擬配對數量以 $n^2$ 的速度爆炸性增加的現象。
在「與365這個大數字相比，23這個數字太小了」的直覺背後，其實交織著由23人所創造出的**「253條看不見的線（配對）」**。&lt;/p>
&lt;p>下次當您前往人群聚集的地方時，除了眼睛看得到的「人數」，也不妨想像一下存在於他們之間無數的「組合的線」。您看世界的方式，應該會變得稍微有數學味一點。&lt;/p></description></item></channel></rss>