关于生日悖论问题的验证

昨天在网上看到一个非常有意思的问题:

数学老师和体育老师打赌,数据老师认为在他们有50个人的班级里有两个生日是同一天的同学的概率远超没有的概率,反之是体育老师的观点。

第一次看到的时候我觉得这特数学老师才是教体育的吧,

我万万没想到在这个po主 经过一番奇奇怪怪 我没有看懂的数学操作之后

他告诉我 50个人的班级里 有两个生日相同的同学的概率是97%以上

而且 他还告诉我 他是科学的 严谨的 正确的 我特么.......

这里就引出了生日悖论

百度百科解释如下

     生日悖论,指如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。这就意味着在一个典型的标准小学班级(30人)中,存在两人生日相同的可能性更高。对于60或者更多的人,这种概率要大于99%。从引起逻辑矛盾的角度来说生日悖论并不是一种悖论,从这个数学事实与一般直觉相抵触的意义上,它才称得上是一个悖论。大多数人会认为,23人中有2人生日相同的概率应该远远小于50%。计算与此相关的概率被称为生日问题,在这个问题之后的数学理论已被用于设计著名的密码攻击方法:生日攻击

可我还是不信 怎么办? 写段代码跑

第一次 测试100次一年内20个随机日期 出现相同的概率 

 妈呀 第一次 概率居然达到了90%

 检查代码后发现没问题 再来一遍 这次 还是20个人 测试10000次

这次没有那么夸张 可也有41.8%

 于是我测试了一下50个人的概率 还是一万次

97.7%!!!!!!!!!!!

 

随后又进行了几次测试 发现概率均在90%以上

 

 

而且测试次数越多结果越是趋近于97% - 98%

相信你和我一样 很震惊 不过我眉头一皱 就找到了问题的答案  嘿嘿嘿 下面是科普时间

先计算房间里所有人的生日都不相同的概率,那么
第一个人的生日是 365选365
第二个人的生日是 365选364
第三个人的生日是 365选363
:
:
:
第n个人的生日是 365选365-(n-1)
所以所有人生日都不相同的概率是:
那么,n个人中有至少两个人生日相同的概率就是:
所以当n=23的时候,概率为0.507
当n=100的时候,概率为0.999999692751072
对于已经确定的个人,生日不同的概率会发生变化。下面用随机变量计算:
令X[i,j]表示第i个人和第j个人生日不同的概率,则易知任意X[i,j]=364/365
令事件A表示n个人的生日都不相同
P(A)=
 
解P(A)<1/2,由对数可得:n>=23
相比之下,随机变量也同样的简单易懂
,且计算起来要方便得多

嗯~ ~ 如果你还是不是明白   那我换种说法

理解生日悖论的关键在于领会相同生日的搭配可以是相当多的。如在前面所提到的例子,23个人可以产生23 × 22/2 = 253种不同的搭配,而这每一种搭配都有成功相等的可能。从这样的角度看,在253种搭配中产生一对成功的配对也并不是那样的不可思议。
换一个角度,如果你进入了一个有着22个人的房间,房间里的人中会和你有相同生日的概率便不是50%了,而是变得非常低。原因是这时候只能产生22种不同的搭配。生日问题实际上是在问任何23个人中会有两人生日相同的概率是多少。
 
后来啊,生日悖论普遍的应用于检测哈希函数:N-位长度的哈希表可能发生碰撞测试次数不是2^N次而是只有2^(N/2)次。这一结论被应用到破解cryptographic hash function的生日攻击中。
生日问题所隐含的理论已经在[Schnabel 1938]名字叫做capture-recapture的统计试验得到应用,来估计湖里鱼的数量
 
 
ok  科普结束

原文地址:https://www.cnblogs.com/zhangxiaoxia/p/10783980.html