生日悖论:为什么 23 个人就有一半概率撞生日
23 人有 50% 概率两人同生日,70 人就 99.9%。这个反直觉的生日问题背后藏着平方级增长的组合数,也正是密码学哈希碰撞的底层数学,本文一步步讲清楚。
生日悖论:为什么 23 个人就有一半概率撞生日
我第一次听到这个结论时是不信的。屋里站 23 个人,随便挑两个出来,这两人居然有超过一半的概率生日撞在同一天?一年有 365 天,凭直觉得凑齐一两百人才像话。我当场拿手机算了一遍,确认了一个让人不太舒服的事实:23 人的撞日概率是 50.7%,我的直觉错得离谱。
这就是生日悖论(也叫生日问题)。它不是脑筋急转弯,而是一道结结实实的概率题,答案违反直觉,但每一步都站得住脚。
直觉为什么会错
错就错在你心里默默换了个问题。
你直觉里算的是"屋里有没有人跟我同一天生日"。这个问题确实涨得慢:别人要专门跟你这一天撞上才算数,大概要凑到 253 个人才有 50% 概率。
但生日悖论问的不是这个,它问的是"N 个人里,随便哪两个撞在一起就算"。这两个问题差别巨大。屋里 23 个人,能配成的"两人组合"有 23×22/2 = 253 对。每一对都是一次撞日的机会,253 次机会里发生一次,概率自然就上去了。
有意思的地方在于:这里的 253 对组合,和上面"凑齐 253 人才跟我撞"里的 253,是同一个数字。问法不同,落点却卡在同一个位置。
数字摆出来看
光说不练没说服力,直接把几档人数的概率列出来。下面这些数字都可以在生日悖论计算器里输入对应人数当场复现:
- 5 人:约 2.7%
- 10 人:约 11.7%
- 23 人:50.7%,这就是那个著名的临界点
- 30 人:70.6%
- 50 人:97.0%
- 70 人:99.9%
70 个人就 99.9%,几乎是板上钉钉。一个普通的中学班级 45 人,撞日概率已经是 94%。换句话说,你随便走进一间满员的教室,里头多半藏着一对同生日的同学,只是大家没去对过而已。
公式是怎么来的
正面硬算"至少一对同生日"很麻烦,反着算"所有人生日都不同"反而简单。这是概率题里常用的窍门:算补集。
让人挨个进屋。第一个人随便哪天生日都行,概率 365/365。第二个人要跟第一个错开,概率 364/365。第三个人要跟前两个都错开,363/365,以此类推。把这些乘起来,就是全员不同的概率:
P(全员不同) = 365/365 × 364/365 × … × (365−N+1)/365
至少有一对撞日的概率,就是 1 减去这个值:
P(至少一对同生日) = 1 − 365! / ((365−N)! × 365^N)
把 N=23 代进去,算出来正好是 0.507。第一次亲手算出这个数,比看别人说一百遍都管用。如果你想动手验证乘法链或者算别的组合数,科学计算器够用了。
为什么曲线涨得这么猛
10 人到 40 人这一段,概率曲线陡得不像话,从百分之十几直冲到九成。原因还是那个组合数。
两人组合的数量是 N(N−1)/2,这是平方级的增长。人数从 10 涨到 20,看着只是翻倍,组合数却从 45 跳到 190,翻了 4 倍多。每多进来一个人,他要跟屋里之前所有人各自结一对新的撞日机会。所以"屋里至少撞一次"这件事,叠加的速度远比"多来一个人"给你的感觉要快。直觉按线性走,现实按平方走,差距就这么拉开了。
它和哈希碰撞是同一套数学
这才是生日悖论真正有用的地方,不只是课堂上的趣味题。
把"365 天"换成"哈希函数的输出空间",整套逻辑原封不动搬过去。50% 临界点大致按 √(2·天数·ln 2) ≈ 1.177·√天数 缩放。365 天对应约 23 人,2^32 种输出对应约 77000 次采样。这就是 MD5 能被人实打实撞出碰撞的根本原因:你不需要遍历 2^32 次,只要约 2^16 万级别的采样,碰撞概率就过半了。
密码学里管这个叫"生日攻击"。一个 64 位哈希,听着抗碰撞,但按这套数学,碰撞在约 2^32 ≈ 43 亿次采样时就变得很可能,而不是 2^64。SHA-2、SHA-3 的安全位数,正是按生日悖论的临界点反推出来的,所以现在都得上 256 位。同样的道理也管哈希表:N 个 key 落进 M 个槽,碰撞概率到 50% 时 N ≈ 1.177·√M,这就是为什么哈希表的容量得给得宽裕。讲清楚 23 个人那条曲线,就讲清楚了为什么哈希要这么设计。
现实里会更夸张一点
有人会抬杠:真实生日不是均匀分布的,还有 2 月 29 日,这些是不是会推翻结论?
恰恰相反。闰年那一天哪怕按 1/4 权重一起算,对 100 人以内任何档位的结果挪动都不到 0.1 个百分点。而真实人群的生日确实略有聚团,美国数据里 9 月出生明显偏多,往前数 9 个月正好撞上 12 月节日季。聚团这件事让撞日比纸面数学还更容易发生,23 人那档大概会多出 1 到 2 个百分点。也就是说,现实里这个悖论比理论上更强,不是更弱。
下次有人在 30 人的群里惊呼"居然有两个人同生日",你可以淡定地告诉他:不撞才稀奇。
Made by Toolora · Updated 2026-06-13