作业帮 > 综合 > 作业

matlab计算在n个人中有人同一天生日的概率问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 14:35:14
matlab计算在n个人中有人同一天生日的概率问题
要求是用子函数实现 计算每n个人概率时的运算次数是5000次 看一下我的程序哪里错了
function birthdays(n);
testtime=5000;
sametime=0;
for i=1:1:n
for t=1:testtime;
e=floor(rand(1,n)*365);
a=sort(e);
b=e(2,length(n))-birthdays(1,length(n)-1)
c=a==0;
d=sum(c);
if d==0;
sametime=sametime+1;
break
f=sametime/testtime;
end
end
plot(i,f)
最后报错是说
Error:File:d:\MATLAB7\work\birthdays.m Line:17 Column:12
This statement is incomplete.
做成了可以加分
程序最后少了个 end
再问: 可以执行了 但是又报错 Attempted to access a(2,50); index out of bounds because size(a)=[1,50].这是改过后的程序 function birthdays(n); testtime=5000; sametime=0; for i=1:1:n for t=1:testtime; e=floor(rand(1,n)*365); a=sort(e); b=a(2,n)-a(1,n-1) c=b==0; d=sum(c); if d==0; sametime=sametime+1; break f=sametime/testtime; end end plot(i,f); end
再答: a只有1行50列,而你却在使用a(2,50)显然不对了
再问: 不是的 b=a(2,n)-a(1,n-1) 这一句的意图是把a这个数组的第2到50个数 与 第1到49个数对应相减得到的差值若有0 则说明存在同一天生日的情况 所以程序应该是b=a(2:n)-a(1:(n-1)) 但是 "f" was determined to be variable. As a variable,it is uninitialized, but function "f" is now in context. In MATLAB 7, you cannot use the same name in a single function as both a function and a variable f改为k也没用 求解
再答: 那就该写成:b = a(2:n) - a(1,n-1);