Я пытаюсь найти правильную вероятность получения 8 попыток подряд в блоке из 25 испытаний, у вас есть 8 полных блоков (из 25 испытаний), чтобы получить 8 испытаний подряд. Вероятность получения любого правильного триал-теста на основе угадывания составляет 1/3, после получения правильных 8-ми строк блоки заканчиваются (поэтому получить более 8-ти правильных строк технически невозможно). Как бы я узнал о вероятности этого? Я думал о том, чтобы использовать (1/3) ^ 8 как вероятность получения 8 правильной строки подряд, есть 17 возможных шансов получить 8 подряд в блоке из 25 испытаний, если я умножу 17 Возможности * 8 блоков, которые я получу 136, 1- (1- (1/3) ^ 8) ^ 136 даст мне вероятность получить 8 подряд подряд в этой ситуации, или я что-то упустил здесь?
источник
Ответы:
Отслеживая вещи, вы можете получить точную формулу .
Пусть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 . Откуда
В качестве начальных условий мы имеем очевидные результаты для m ≥ 0 ( то есть мы уже видели k в ряду) и f p , k ( j , m ) = 0 для k - J > Mfp,k(k,m)=1 m≥0 k fp,k(j,m)=0 k−j>m ( то есть не хватает испытаний, чтобы получить k в ряд). Теперь это быстро и просто (с использованием динамического программирования или, поскольку параметры этой задачи настолько малы, рекурсия), чтобы вычислить
Когда это дает 80897 / +43046721 ≈ 0,0018793 .p=1/3 80897/43046721≈0.0018793
Относительно быстрый
R
код для симуляции этоЧерез 3 секунды после расчета . Хотя это выглядит высоко, это только 1.7 стандартных ошибок. Я выполнил еще 10 6 итераций, получив 0,001867 : всего на 0,3 стандартных ошибок меньше, чем ожидалось. (В качестве двойной проверки, поскольку в более ранней версии этого кода была небольшая ошибка, я также выполнил 400 000 итераций в Mathematica, получив оценку 0,0018475 .)0.00213 106 0.001867 0.3 0.0018475
Этот результат меньше , чем одну десятую оценку в вопросе. Но , возможно , я не до конца понял: еще одна интерпретация « у вас есть 8 полных блоков ... чтобы получить 8 испытаний исправить в строке» в том , что ответ изыскиваются РАВНО 1 - ( 1 - е 1 / +3 , 8 ( 0 , 25 ) ) 8 ) = 0,0149358 ... .1−(1−(1/3)8)136≈0.0205 1−(1−f1/3,8(0,25))8)=0.0149358...
источник
While @whuber's excellent dynamic programming solution is well worth a read, its runtime isO(k2m) with respect to total number of trials m and the desired trial length k whereas the matrix exponentiation method is O(k3log(m)) . If m is much larger than k , the following method is faster.
Both solutions consider the problem as a Markov chain with states representing the number of correct trials at the end of the string so far, and a state for achieving the desired correct trials in a row. The transition matrix is such that seeing a failure with probabilityp sends you back to state 0, and otherwise with probability 1−p advances you to the next state (the final state is an absorbing state). By raising this matrix to the n th power, the value in the first row, and last column is the probability of seeing k=8 heads in a row. In Python:
yields 0.00187928367413 as desired.
источник
According to this answer, I will explain the Markov-Chain approach by @Neil G a bit more and provide a general solution to such problems ink , the number of trials as n and a correct trial by W (win) and an incorrect trial by F (fail). In the process of keeping track of the trials, you want to know whether you already had a streak of 8 correct trials and the number of correct trials at the end of your current sequence. There are 9 states (k+1 ):
R
. Let's denote the desired number of correct trials in a row byFrom this, we can construct a9×9 transition matrix M (as each column of M sums to 1 and all entries are positive, M is called a left stochastic matrix):
Each column and row corresponds to one state. Aftern trials, the entries of Mn give the probability of getting from state j (column) to state i (row) in n trials. The rightmost column corresponds to the state I and the only entry is 1 in the right lower corner. This means that once we are in state I , the probability to stay in I is 1 . We are interested in the probability of getting to state I from state A in n=25 steps which corresponds to the lower left entry of M25 (i.e. M2591 ). All we have to do now is calculating M25 . We can do that in
R
with the matrix power function from theexpm
package:The probability of getting from stateA to state I in 25 steps is 0.001879284 , as established by the other answers.
источник
Here is some R code that I wrote to simulate this:
I am getting values a little smaller than your formula, so one of us may have made a mistake somewhere.
источник
Here is a Mathematica simulation for the Markov chain approach, note that Mathematica indexes by1 not 0 :
This would yield the analytical answer:
Evaluating atp=1.03.0
Will return0.00187928
This can also be evaluated directly using builtin
Probability
andDiscreteMarkovProcess
Mathematica functions:Which will get us the same answer:0.00187928
источник