🎂 生日悖论

在一个房间里需要多少人,才能使两个人同生日的概率超过 50%?

直觉告诉你:365天,需要至少一半(183人)才能有50%概率重复?
现实是:只需要 23 人,概率就超过 50%!70 人时概率已达 99.9%!

🧪 交互式模拟器

23
模拟匹配概率
50.7%
理论概率
匹配次数
总模拟次数

📐 数学推导

关键洞察:我们不是问"有人和同生日"的概率,而是"任意两人"同生日的概率。23 人产生 C(23,2) = 253 对组合——远比直觉中的 23 多。

1
考虑没有人同生日的概率更容易。第1人任意选一天(365/365),第2人选不同天(364/365),第3人(363/365)...
2
P(无重复) = (365/365) × (364/365) × (363/365) × ... × ((365-n+1)/365)
3
P(至少一对重复) = 1 - P(无重复)
P(n) = 1 - 365! / ((365-n)! × 365ⁿ)

关键数值

人数 n配对数 C(n,2)P(至少一对同生日)直觉预估
104511.7%~3%
2019041.1%~5%
2325350.7%~6%
3043570.6%~8%
4078089.1%~11%
50122597.0%~14%
60177099.4%~16%
70241599.92%~19%
100495099.99997%~27%

🧠 为什么直觉错了?

🔑 组合爆炸

你的直觉在算"有人和我同生日的概率":22人 × 1/365 ≈ 6%。但问题问的是"任意两人同生日":C(23,2) = 253 对 × 1/365 ≈ 69%(近似值)。

人数 n 增加时,配对数按 n²/2 增长——这就是为什么概率上升得比你想象的快得多。

🔑 近似公式

当 n 远小于 365 时,P(n) ≈ 1 - e^(-n(n-1)/(2×365))

令 P = 0.5,解得 n ≈ √(2 × 365 × ln2) ≈ 22.5,所以 23 人!

一般化:对于 d 个等可能值,50% 概率重复需要约 √(2d × ln2) ≈ 1.177√d 个人。

🌍 现实中的应用

1
密码与哈希碰撞:SHA-256 有 2²⁵⁶ 种输出,但根据生日悖论,只需约 2¹²⁸ 次尝试就有 50% 概率找到碰撞。这就是为什么哈希函数的安全性是输出长度的一半。
2
分布式系统:Snowflake ID 等方案需要考虑节点ID碰撞。即使有百万级ID空间,数千节点也可能碰撞。
3
数据库唯一性:随机生成的短链接/邀请码,如果长度不够,碰撞概率远超直觉预估。

🎮 试试你的直觉

在不看答案的情况下,试着回答:

Q1: 如果一年有 1000 天(而不是365天),需要多少人才能有 50% 概率同生日?

Q2: 50 人的房间里,至少两人同生日的概率约为?