生日问题也叫做生日悖论,它是这样这样描述的。
假如随机选择n个人,那么这个n个人中有两个人的生日相同的概率是多少。如果要想概率是100%,那么只需要选择367个人就够了。因为只有366个生日日期(包括2月29日)。
如果想要概率达到99.9% ,那么只需要70个人就够了。50%的概率只需要23个人。
对于现在的幼儿园小朋友来说,一个班上差不多有30人,那么将会有大于50%的几率,班上有两个人的生日是一样的。优品拍拍
听起来是不是很神奇?跟我们第一映像中的基数是不是要少很多。
我们看一张概率图:
在实际应用中,可以应用生日问题中的概率模型,从而减少碰撞攻击的复杂度,或者来评估一个hash函数中可能出现碰撞攻击的几率。
怎么计算呢?
假如P(A) 是生日相同的概率,那么P(A) = 1 – P(A’) ,其中P(A’)是生日不同的概率。
一个人生日不同的概率是365/365,两个人生日不同的概率就是365/365 * 364/365 ,依次类推。
我们可以得到23个人生日不同的概率大概就是 0.492703。
也就是说23个人中有两个人生日相同的概率可以大于50%。