生日悖论是指在不少于 23 个人中至少有两人生日相同的概率大于 50%。例如在一个 30 人的小学班级中,存在两人生日相同的概率为 70%。对于 60 人的大班,这种概率要大于 99%。从引起逻辑矛盾的角度来说,生日悖论是一种 “
佯谬”。但这个
数学事实十分反直觉,故称之为一个悖论。生日悖论的数学理论被应用于设计
密码学攻击方法——
生日攻击。
生日问题求解
精确解法
23 个人里有两个生日相同的人的概率有多大呢?居然有 50%。不计特殊的年月,如 2 月 29 日。于是一年中有 N = 365 天。设房间里有 n 个人,要计算所有人的生日都不相同的概率。那么第一个人的生日是 365 选 365,第二个人是 365 选 364,第三个人 365 选 363 …… 第 n 个人的生日是 365 选 365-(n-1)。所以所有人生日都不相同的概率为
这里 n! 表示 n 的阶乘。那么,n 个人中有至少两个人生日相同的概率就是 P。将 n 与 P 的关系列入下表:
可以看到 n = 100 远小于 N = 365 时,就已经
几乎必然有一对
同生缘,所有人生日两两不同的概率仅一千万分之三。
近似解法
为了更好地理解以上精确结果,本节给出一个近似解法。根据 N = 365,将没有同生缘的概率写作
当人数 n << N 时,根据近似 (1-1/N)n ≈ 1-n/N 有
根据 N >>1,
自然对数的底 e ≈ (1+1/N)N(把 N = 365 代入算算看),得到近似解
可见在 N = 365 天中要出现两个生日相同的人,所需人数为 n~O(√N) 量级。每个特定的人在 n 个人中遇到同生缘的数目平均为 (n-1)/N 很少,但把 n 个人遇到的同生缘加总起来除以 2,就能得到平均有 n(n-1)/2N 对同生缘。这就是为什么会发生 “生日悖论” 的原因。个人觉得罕见的事情在集体中却是常见的。
问题变型
设某人练习投篮,投第一球
命中概率为 a = 10%,以后每练习一球,命中概率提高 b = 2%。试计算他投中第一个球时,投球次数 X 的
概率分布。于是投了 n 次没有命中的概率
精确解法要把阶乘推广为
伽玛函数,再用
斯特林公式近似,较为繁琐。直接用近似解法,设 N = (1-a) / b >> 1,则有
将隐含在投篮问题中的 “生日问题” 挖掘出来后,即可直接套用前面的
近似解得到上式。可见训练效果 b 使 P(X > n) 随 n 增加而趋于 0 的速度快于
几何分布。
生日悖论的应用
1、生日悖论普遍的应用于检测
哈希函数:N 位长度的
哈希表可能发生碰撞测试次数不是 2N 次而是只有 2N/2 次。这一结论被应用到破解密码哈希函数 (cryptographic hash function) 的 “
生日攻击” 中。
2、生日问题所隐含的理论已经在 [Schnabel 1938] 名字叫做 “
标记重捕法” (capture-
recapture) 的统计试验得到应用,来估计湖里鱼的数量。
扩展阅读
悖论定义
悖论是指一种导致矛盾的命题。悖论 (paradox) 来自
希腊语 “para+dokein”,意思是 “多想一想”。 如果承认它是真的,经过一系列正确的推理,却又得出它是假的;如果承认它是假的,经过一系列正确的推理,却又得出它是真的。
把集合分成两类,凡是不以自身作为元素的集合称为正常集,(例如,
自然数集 N 本身不是一个自然数,因此 N 是正常集。)凡是以自身作为元素的集合称为异常集。(例如,所有的
非生物的集合 F 也是非生物,因此 F 是异常集。)
这样,许多日常中常见的悖论(
说谎者悖论,
理发师悖论,
上帝悖论等)都可以归入异常集之中了。
另外一种悖论是关于无限的,虽然我们基本上都能接受极限的理论,但是要把这个理论向不懂的人解释还是十分困难的。
经典故事
(古希腊数学家
芝诺 (Zeno of Elea) 的
阿基里斯悖论)阿基里斯在赛跑中不可能追上起步稍微领先于他的
乌龟,因为当他要到达乌龟出发的那一点,乌龟又向前爬动了。阿基里斯和乌龟的距离可以无限地缩小,但永远追不上乌龟。
(古希腊数学家芝诺 (Zeno of Elea) 的二分法悖论)当一个物体行进一段距离到达 D,它必须首先到达距离 D 的二分之一,然后是四分之一、八分之一、十六分之一、以至可以无穷地划分下去。因此,这个物体永远也到达不了 D。
康托尔(1845-1918)成功地证明了:一条直线上的点能够和一个平面上的点
一一对应,也能和空间中的点一一对应。由于无限,1厘米长的线段内的点,与太平洋面上的点,以及整个地球内部的点都 “一样多”。