p=0.5;
y=0;c=0;N=100000;s=0;
for n=1:N
for t=1:7
if rand(1)>p;
c=c+1;
else
c=0;
end
if c==3;
y=1;
break
else y=0;
end
end
s=s+y;
end
s/N
如果对Matlab有比较深研究的网友,可以尝试解读下下面的程序,它与上面的程序就有完全相同的效果,但是相等经典
clear,
s=0;N=100000;
for i=1:N
a=round(rand(1,7));
b=find(a==1);%找出下雨天的序号
c=diff(b);%相连的两个下雨天之间相隔了几天
d=find(c==1);%找出只有相隔一天的序号
s=s+any(diff(d)==1);%diff(d)表示相隔一天的序号之差,如果结果还存在1的话,那么肯定有3天连续下雨的
end
s/N