核心要点

  • 正难则反:先算「所有人生日互不相同」的概率,再用 1 减。

  • P(无重复) = ∏_{i=0}^{n-1} (1 - i/365)(忽略闰年与生日分布不均)。

  • n=23 时碰撞概率 ≈ 50.7%,首次超过一半。

  • 反直觉源于「两两配对数」是 C(n,2),随 n 平方增长。

标准回答

一、先把结论讲清楚

可以先给结论:只要 23 个人,至少两人同生日的概率就已经超过 50%,大约是 50.7%。

一、这题要先算反面。

直接算“至少一对同生日”比较麻烦,所以我先算“所有人生日都不同”。如果有 n 个人,忽略闰年并假设生日均匀独立,那么:

P(无重复) = (365/365) × (364/365) × (363/365) × ... × ((365-n+1)/365)

所以 P(至少一对同生日) = 1 - P(无重复)

二、拆开机制和判断点

二、为什么 23 个人就够?

代入 n=22 时,碰撞概率大约是 47.6%;代入 n=23 时,大约是 50.7%,所以第一次超过一半是在 23 人。

三、为什么它反直觉?

很多人脑子里想的是“有没有人跟我同生日”,但题目其实是“任意两个人同生日”。23 个人能组成 C(23,2)=253 对,配对数是平方级增长的,所以碰撞来得比直觉快很多。

三、补上例子、边界和取舍

如果想给一个口头近似,可以说:概率大概是 1 - exp(-n(n-1)/(2×365)),解到 50% 附近就是 22 到 23 人。

面试里如果出现公式,建议先说 生日悖论:多少人在场同生日概率就过半 解决的直觉问题,再解释变量含义和适用条件。最后补一个反例或边界,比如样本量不足、分布假设不成立、数值不稳定时应该怎么处理。

常见误区

⚠️ 常见踩坑

误区一:把题目理解成“有人和我同生日”。 那是指定某一天/某个人的匹配,和“任意一对同生日”不是一回事。

误区二:只看 1/365,忽略配对数。 真正推动概率上升的是 C(n,2) 这些两两组合。

追问

追问 1把天数从 365 推广到 d,过半需要多少人?

可以口头说成 约 1.177√d。比如哈希空间大小是 2^k,碰撞级别大约就是 2^(k/2),这也是生日攻击里“哈希抗碰撞强度减半”的来源。

追问 2若想让「至少两人同生日」概率达 99%,大约需要多少人?

大约需要 57 人。这说明概率不是线性慢慢涨的;人数上去以后,无重复概率会很快下降,因为两两配对数量增长很快。

🔗 相似问题

同一考点的不同问法,换着练更稳

延伸学习

按主题分类的相关资源,便于系统复习