Вероятность события три раза подряд, Matlab, метод Монте-Карло

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

Я пытаюсь использовать метод моделирования Монте-Карло, чтобы найти вероятность события, происходящего в списке из 10 три раза подряд. Я собираюсь запустить 1 миллион испытаний. Вероятность того, что событие произойдет в любое время, составляет 31,43 процента. Я думаю, что я вызову любое испытание (b) и создам вложенный цикл, поэтому, если условие одно (значение случайного числа меньше 0,3143), я перейду к следующему числу в индексе, и если это число равно меньше 0,3143 Я перейду к следующему числу. Если это произойдет, я добавлю 1 к шансу индейки. Когда миллион попыток будет выполнен, я разделю шанс индейки на 1 миллион, чтобы получить вероятность того, что событие произойдет три раза подряд. Мой вопрос: как я могу проверить, происходит ли событие три раза подряд? Простите меня, если я не предоставил достаточно информации, я новичок в программировании.


person Jorge Medina    schedule 16.05.2016    source источник


Ответы (1)


Если вы определите

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), если вас интересует только ответ "да" или "нет".

person ThP    schedule 16.05.2016