一个事件连续发生三次的概率,Matlab,蒙特卡罗方法


numtrials = 1000000
turkeychance= 0
for i = numtrials
    for b = 1:10
    r = rand(10,1);
    if r(b)<=.3143

我正在尝试使用蒙特卡罗模拟方法来查找连续三次在 10 个列表中发生的事件的概率。我要进行100万次试验。事件发生的概率在任何时候都是31.43%。我的想法是,我将调用任何试验 (b( 并创建一个嵌套循环,因此如果条件一(兰德值小于 .3143(,我将移动到索引中的下一个数字,如果该数字小于 .3143,我将移动到下一个数字。如果发生这种情况,我会在火鸡几率上加 1。当百万次试验完成后,我将火鸡机会除以 100 万,得到事件连续发生三次的概率。我的问题是,如何检查事件是否连续发生三次?如果我没有提供足够的信息,请原谅我,我是编程新手。

如果您定义

r = rand(10,1);

那么你就不需要内部for循环了。您可以使用以下方法检测事件

events = r<0.3143;

您可以通过做

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)

最新更新