找回密码
 注册
Simdroid-非首页
查看: 42|回复: 0

【原创】matlab模拟N个人生日相同的概率

[复制链接]
发表于 2010-11-10 23:20:19 | 显示全部楼层 |阅读模式 来自 江苏南京
纯粹是小程序,顺带熟悉几个matlab的函数。让各位见笑了。

背景:已知某次舞会有30人参加,请问这30人中存在生日相同(仅指月份,不考虑年份)的概率有多大。

matlab模拟程序:用随机数模拟出birthday数组,数组中若存在相同元素,则表示这30人存在生日相同的情况。

count=0;          %总共进行1000次试验, count用来计数存在生日相同情况的数目。                           
for i=1:1000
        birthday=round(365*rand(1,30));
        if length(unique(birthday))<30           %用unique函数来判断是否存在相同元素
                count=count+1;
        end
end

理论解:根据概率论的知识,这30人存在生日相同的情况的概率=1-(365!/(365-30)!)/(365^30)=0.7左右

如果直接用 factorial(365)/(factorial(335)*365^30),由于计算中牵扯的数字太大,在matlab中算不出来。其实
(365!/(365-30)!)/(365^30)=(365/365)*(364/365)*(363/365)*....*(336/365)
等式右边可以用matlab计算
p=1;
for i=1:29
        p=p*(365-i)/365;
end
p=1-p;

上述计算结果可看出,p=0.7左右,跟试验模拟的结果很接近。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-3-28 23:24 , Processed in 0.040813 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表