用matlab写出这样的函数“给出n个人(n<365)至少有两个人在同一天的概率的计算机上机模拟程序”

 我来答
xiongxionghy
2009-11-03 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1753
采纳率:75%
帮助的人:3004万
展开全部
这哪是什么模拟程序啊。。。

所谓模拟程序就是“计算机仿真”,就是要让计算机产生随机数作为生日,来模拟实际情况,进而统计概率。

上面两位根本就是用电脑在运算嘛,根本不是模拟啊。

看我的。
******************************************************
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%左右,与概率论计算结果是符合的。
summerpassion
2009-11-03 · TA获得超过636个赞
知道答主
回答量:374
采纳率:0%
帮助的人:167万
展开全部
function p=property(n)
a=1;
for i=0:n-1
a=a*(365-i)/365;
end
p=1-a;

输入n,p为所求概率。

注意:n增大时,a减小,当a减小到一定值时,由于matlab的精度问题,p=1-a会取恒值1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0461d932a
2009-11-03
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
>>n=365;
m=2:n;
temp=1;
for i=1:length(m)
temp=temp*(n-i)/n;
p(i)=1-temp;
end
plot(m,p)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式