同过生日的概率
牛角尖 欢迎访问

同一天过生日的概率有多大?

有一个很经典的概率问题,是讲如果一个班有学生50人,找到至少有2个人同一天过生日的概率有多大?

我问过很多人,都觉得不好算。简化点问是否有50%?答没有,再问有没有20%,也还是觉得没那么高。当我告诉答案是96.5%时,都表示不相信。

而事实上,当有50个学生时,答案确实是96.5%;有59个学生更是高达99.1%,有47个是94.8%,有35个是80.5%,而当有23个时,概率就刚好超过50%,可以进行赔率为1:1的赌博了。另一方面,要是以普通约为50人的班做对象,按1:10的赔率赌博也是个赚字。

看到这些答案吃惊吗?不信的话可以做验证,下面有两个方法:

第一个是实验验证,找多个班的学生生日资料,查查是不是有同一天过生日的,计算有同一天过生日的数量占总数的百分比。当然也不必限定一定是学生,只要是能找到生日资料的任何人群都可以,如亲人朋友、战友、网友、同村的、同楼的等等,有生日记载的历史人物也可以,只要按一定的数量组成要考查的群体就行。

第二个是实验数学方法验证。毕竟要找那么多人的生日资料不是很容易办到的。可以假设生日的分布是随机的,用随机数函数产生伪随机数模拟生日资料进行分析。

  1. 打开Excel,新建一个工作簿,另存为birthday.xls;
  2. 在Sheet1的A2单元格输入“=INT(RAND()*366)”,获得从0至365的伪随机数;
  3. 在B1单元格输入“1-1”,显示为1月1日,或者将B列设为喜欢的日期格式,设置C列为B列相同的日期格式;
  4. 在B2单元格输入“=A2+B$1”,显示为1月1日,或者将B列设为喜欢的日期格式;
  5. 在D2单元格输入“=C3-C2”,显示为1月1日,或者将B列设为喜欢的日期格式;
  6. 选取区域A2:D2,鼠标移到选取区域的右下角时指针变为“+”,如要模拟50人的情况,将鼠标按住下接至51行;
  7. 在D1单元格输入“=MIN(D2:D50)”;
  8. 此时A列为0至365的伪随机数,B列为对应的日期。此二列当有输入事件发生时会重新产生随机数而变化。D列为0,将D51中的内容删除;
  9. 选取区域B2:B51,复制,选择性粘贴数值到C2:C51,对C列数据区域排序。

此时,如D1的值为0,则说明是有同一天过生日的;重复第9步就可统计所需概率了。 当然,要是觉得一次次统计太累,也可以将第9步录制为宏,然后对宏代码做些修改以自动完成。

在F2单元格输入“班数”;F3单元格输入准备模拟统计班的数量,比如说100,当然此数越大越准确,但花的计算时间也会相应增加;在F4单元格输入“概率”;F5单元格准备显示宏程序统计出的概率,将格式设为百分比。运行宏程序就在F5中见到所得的概率结果。宏代码如下: (Excel文件下载

Sub STAT()

End Sub

看到模拟统计的结果了吧?下面我们来分析如何用统计学的方法计算:

2个人同一天过生日的概率是多少呢?很明显是1/365。但如有多个人的话,则要考虑任何2个人同一天过生日的可能性。需要用组合计算确定有多少个可能的2人组合。而至少有2人同一天过生日的概率,则考虑通过计算没有任何一个2人组合同一天过生日的概率来得到。显然,一个2人组合不是同一天过生日的概率为364/365,有多少个2人组合就将它乘多少次方。

我们还是在前面的Excel文件中进行计算:在F7、F8中分别输入“人数”如“50”;在F9、F10中分别输入“组合数”和“=COMBIN(F8,2)”,此时F10是得到计算出的组合数为1225;在F11、F12中分别输入“概率”和“=1-POWER(364/365,F10)”,并将F12格式设为百分比,就得到了所求的结果,在前述的50人时为96.53%;变化F8中的数值就求得不同人数下的概率。

顺便说下,前述的364/365的多次方的计算,用计算器的话可能不能算或者误差很大,应当先将364/365取对数,再乘以组合数n*(n-1)/2,将乘方计算转化为乘法计算,再求反对数。用这种方法,有数学用表(需查对数表与反对数表)的情况下也能用手工计算出结果。


答网友Mai Zhou

原创资料,版权所有。网络转载请注明出处,其它媒体需经同意

邮件:newjiaojian@gmail.com

QQ:85057201