核心要点

  • 正难则反:先算「所有人生日互不相同」的概率,再用 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% 增长很快,因无重复概率随人数近似呈高斯衰减。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。