摘要
本文针对概率论老师提出的“生日悖论[1]”问题进行研究,通过matlab编程实现仿真,并将最终结果以图片形式表示出来。
关键词:
仿真 古典概型 生日悖论 matlab tabulate函数 函数化一、问题重述
老师要求我们以“生日悖论”为题,在10人、30人、60人、90人的情况下随机输入每个人的生日y,输出图表,图表内容包括:
1、横坐标为迭代次数x(x∈[1,200]);
2、纵坐标为日期y(y∈[1,365]);
3、黑色叉号(x)表示不重复日期;
4、红色叉号(red X)表示重复日期;
5、标题包括本次迭代中仿真人数(/人)和至少有两人生日重复频率(P)。
二、问题分析
针对此问题,使用matlab编程,将1~365的随机数分别表示为10、30、60、90的向量,针对向量排序并统计重复数,将≥2的日期表示出来,并以向量表示,利用函数建立坐标,将每一次仿真的图像以黑色与红色叉号的形式表示在图上,重复200次,完成图像;同时,统计红色叉号与黑色叉号的数量,得出P;利用函数化主程序进行分块,得出结论。三、编程
首先解决随机化问题,这里使用了常见的随机数函数1 | round(rand(1,h)*365); |
1 | ... ... |

可以看见,当人数大于30时,发生生日重复的概率已经超过70%,这与直觉相悖,故称“生日悖论”。
四、总结
本文针对生日悖论的实际情况进行仿真,得出以上图像,从而直观上证明了生日悖论的反直觉性。
五、参考文献
[1]https://baike.baidu.com/item/%E7%94%9F%E6%97%A5%E6%82%96%E8%AE%BA/2715290?fr=aladdin
六、附件
函数:
1 | function [P] = bir(h,it,x,y,z) |
主程序:
1 | bir(10,200,2,2,1); |
实验原图下载:
final