前几天饭局上跟人打赌,我说随便拉23个人坐一桌,里面至少有两个人同月同日生的概率超过一半。没人信,都笑我。
简单说这确实反直觉。一年365天,直觉上怎么也得凑够183个人(天数的一半)才有戏吧?错,23个就够。
关键在于算法要反着想:不直接算"有人撞车",先算"所有人生日都不同"。第一个人随便,第二个人避开他有364/365的机会,第三个避开前两个是363/365,一路乘下去,到第23个人,全不撞的概率约49.3%。翻过来,撞车概率就是50.7%,正好过半。
公式写出来就一行:1 − ∏(365−k)/365,k从0到22。
更夸张的是推到57个人,概率直接飙过99%。本质上是"配对数"在涨:23个人能配出253对,每对都是一次独立抽奖。抽奖次数多了,低概率事件就变成必然事件。
这玩意不只是酒桌把戏。密码学里的碰撞攻击就靠着这个原理吃饭,哈希值空间再大,也架不住配对组合爆炸。所以短哈希早就不能用了。
各位下次聚会可以现场验证一下,23人局不好凑的话,30人基本稳赢,记得提前下注 ( ̄▽ ̄)