Отслеживая вещи, вы можете получить точную формулу .
Пусть p=1/3 будет вероятность успеха и k=8 будет число успехов в строку , которую нужно рассчитывать. Они исправлены для проблемы. Значения переменных: m , количество испытаний, оставшихся в блоке; и j - количество последовательных успехов, которые уже наблюдались. Пусть шанс в конечном итоге достичь k успехов подряд до исчерпания m испытаний будет записан как fp,k(j,m) . Мы ищем f1/3,8(0,25) .
Предположим, мы только что видели наш jth успех подряд с m>0 испытаний. Следующее испытание либо является успешным, с вероятностью p - в этом случае j увеличивается до j+1 -; или же это сбой с вероятностью 1−p - в этом случае j сбрасывается в 0 . В любом случае m уменьшается на 1 . Откуда
fp,k(j,m)=pfp,k(j+1,m−1)+(1−p)fp,k(0,m−1).
В качестве начальных условий мы имеем очевидные результаты для m ≥ 0 ( то есть мы уже видели k в ряду) и f p , k ( j , m ) = 0 для k - J > Mfp,k(k,m)=1m≥0kfp,k(j,m)=0k−j>m ( то есть не хватает испытаний, чтобы получить kв ряд). Теперь это быстро и просто (с использованием динамического программирования или, поскольку параметры этой задачи настолько малы, рекурсия), чтобы вычислить
fp,8(0,25)=18p8−17p9−45p16+81p17−36p18.
Когда это дает 80897 / +43046721 ≈ 0,0018793 .p=1/380897/43046721≈0.0018793
Относительно быстрый R
код для симуляции это
hits8 <- function() {
x <- rbinom(26, 1, 1/3) # 25 Binomial trials
x[1] <- 0 # ... and a 0 to get started with `diff`
if(sum(x) >= 8) { # Are there at least 8 successes?
max(diff(cumsum(x), lag=8)) >= 8 # Are there 8 successes in a row anywhere?
} else {
FALSE # Not enough successes for 8 in a row
}
}
set.seed(17)
mean(replicate(10^5, hits8()))
Через 3 секунды после расчета . Хотя это выглядит высоко, это только 1.7 стандартных ошибок. Я выполнил еще 10 6 итераций, получив 0,001867 : всего на 0,3 стандартных ошибок меньше, чем ожидалось. (В качестве двойной проверки, поскольку в более ранней версии этого кода была небольшая ошибка, я также выполнил 400 000 итераций в Mathematica, получив оценку 0,0018475 .)0.002131060.0018670.30.0018475
Этот результат меньше , чем одну десятую оценку в вопросе. Но , возможно , я не до конца понял: еще одна интерпретация « у вас есть 8 полных блоков ... чтобы получить 8 испытаний исправить в строке» в том , что ответ изыскиваются РАВНО 1 - ( 1 - е 1 / +3 , 8 ( 0 , 25 ) ) 8 ) = 0,0149358 ... .1−(1−(1/3)8)136≈0.02051−(1−f1/3,8(0,25))8)=0.0149358...