这哪是什么模拟程序啊。。。
所谓模拟程序就是“计算机仿真”,就是要让计算机产生随机数作为生日,来模拟实际情况,进而统计概率。
上面两位根本就是用电脑在运算嘛,根本不是模拟啊。
看我的。
******************************************************
n = 50; %有50个人
TestTime = 1000; %总共模拟1000次,模拟次数越多,结论越准确
SamebirthdayTime = 0; %看模拟的1000次中,有几次是“有相同生日”的情况,初值先设为0
for loop = 1:TestTime %模拟开始
birthday = floor(rand(1,n)*365); %用计算机产生n个随机数,作为n个人的生日
birthday = sort(birthday); %将生日从小到大排序
for i=1:n-1
flag = birthday(i)-birthday(i+1); %看排序后相邻有没有相同的数
if flag == 0 %如果有,就说明此次模拟出现了“有相同生日”的情况
SamebirthdayTime = SamebirthdayTime + 1;
break
end
end
end
P = SamebirthdayTime/TestTime; %算出最终概率
***************************************************
楼主可以运行一下,n=50的时候,模拟出来应该是97%左右,与概率论计算结果是符合的。
温馨提示:答案为网友推荐,仅供参考