核心要点
正难则反:先算「所有人生日互不相同」的概率,再用 1 减。
P(无重复) = ∏_{i=0}^{n-1} (1 - i/365)(忽略闰年与生日分布不均)。
n=23 时碰撞概率 ≈ 50.7%,首次超过一半。
反直觉源于「两两配对数」是 C(n,2),随 n 平方增长。
标准回答
设房间内有 n 人,每人生日在 365 天中均匀独立分布。直接算「至少两人同生日」较难,故用补事件:所有人生日互不相同的概率为
P(无重复) = (365/365)·(364/365)·(363/365)···((365-n+1)/365) = ∏_{i=0}^{n-1} (1 - i/365)。
于是碰撞概率 P(有重复) = 1 - P(无重复)。代入数值:n=22 时约 47.6%,n=23 时约 50.7%,故 23 人即过半。直觉低估的原因是:人们误以为要和「自己」同生日,但实际是任意一对,可配对数为 C(23,2)=253 对,每对碰撞概率 1/365,期望碰撞对数已接近 0.69,因此整体碰撞概率自然过半。
粗略估计可用近似 1 - exp(-n(n-1)/(2·365)),令其等于 0.5 解得 n ≈ 1.177·sqrt(365) ≈ 22.5,与精确值吻合。
常见误区
⚠️ 常见踩坑
不要把问题误解成「某指定某人与他人同生日」(那需约 253 人才过半);本题是「存在任意一对同生日」,配对数随 n 平方增长,所以 23 人即可。
追问
追问 1:把天数从 365 推广到 d,过半需要多少人?
近似公式 n ≈ 1.177·sqrt(d)。例如哈希值域 d=2^k 时,约 sqrt(2^k)=2^(k/2) 次即可期望碰撞——这正是生日攻击的核心,密码学中 n 位哈希仅有约 n/2 位的抗碰撞强度。
追问 2:若想让「至少两人同生日」概率达 99%,大约需要多少人?
解 ∏(1-i/365) ≤ 0.01,约需 57 人。可见从 50% 到 99% 增长很快,因无重复概率随人数近似呈高斯衰减。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。