numtrials = 1000000
turkeychance= 0
for i = numtrials
for b = 1:10
r = rand(10,1);
if r(b)<=.3143
我试图使用monte Carlo模拟方法连续三次查找事件发生在10个列表中的概率。我将进行100万次试验。事件发生的概率在任何时候都是31.43%。我想的是我会调用任何试验(b)并创建一个嵌套循环,所以如果条件一(rand值小于.3143)我将移动到下一个数字索引,如果该数字小于.3143,我将转到下一个数字。如果发生这种情况,我会给火鸡增加1点机会。当百万次试验完成后,我将火鸡场除以100万,以便连续三次获得事件发生的概率。我的问题是,如何检查事件是否连续发生三次?请原谅我,如果我没有提供足够的信息,我是编程的新手。
答案 0 :(得分:0)
如果你定义
r = rand(10,1);
然后你不需要内部for
循环。您可以使用
events = r<0.3143;
你可以通过
找到连续3个或更多Times = events;
Times(3:end) = Times(3:end) + events(2:end-1);
Times(3:end) = Times(3:end) + events(1:end-2);
请注意,在10次中,您可以连续多次执行3个事件。如果您只对是或否答案感兴趣,请使用sum(Times>3)
来计算有多少人或any(Times)
。