来源:科学松鼠会网站 作者:苏椰
http://songshuhui.net/archives/23737.html
每个人都有生日,偶尔会遇到与自己同一天过生日的人,但在生活中,这种缘分似乎并不常有。我们猜猜看,在50个人当中,出现这种缘分的概率有多大,是10%,20%,还是50%?经过网友的计算,在50个人中有相同生日的概率,高达97%。
我们没有算错,是我们的直觉错了。正因为计算结果与日常经验产生了如此明显的矛盾,该问题被称为“生日悖论(Birthday Paradox)”。它体现的,是理性计算与感性认识的矛盾,并不引起逻辑矛盾,所以倒也算不上严格意义上的悖论。
如何解释呢?首先,当只有1个人时,概率为0%,当人数大于365时,根据鸽巢原理,概率是 100%。于是,在1到365这个区间内,我们直觉地认为,对应的概率是线性地从0%增长到100%,哪怕不线性,也不会陡峭得太离谱,所以对于57人来说,该概率应该在57/365,即约七分之一。但事实上,这条曲线的增长劲头却是十分可怕,它就像坐了直升机一样迅猛蹿升,在50人时就已相当接近100%,与我们幻想的线性曲线有天壤之别。
新的问题是,在一群人当中,有人与你同一天生日,这个概率有多大?同样,我们把概率曲线描出来,可以看到,它是十分平缓的。我认为,就是因为当我们看到“有人生日相同”时,下意识地用“与我生日相同”去推测,以至于把火箭发射当成了平稳增长,造成了生日悖论。
所以生日悖论的本质就是,随着元素增多,出现重复元素的概率会以惊人速度增长,而我们低估了它的速度。这意味着,在密码学中,我们低估了散列值出现碰撞的概率。这一结论应用于对散列函数的攻击中,称为“生日攻击”
快报记者 吴杰 整理