Śledząc rzeczy, możesz uzyskać dokładną formułę .
Niech jest prawdopodobieństwo sukcesu i k = 8 jest liczba sukcesów w rzędzie chcesz liczyć. Zostały one naprawione dla problemu. Zmienne wartości to m , liczba prób pozostałych w bloku; oraz j , liczba zaobserwowanych sukcesów. Niech szansa na osiągnięcie k sukcesów z rzędu przed wyczerpaniem m prób zostanie zapisana f p , k ( j , m ) . Dążyć F 1 / 3 , 8 (p=1/3k=8mjkmfp,k(j,m) .f1/3,8(0,25)
Załóżmy, że właśnie widzieliśmy nasz sukces z rzędu z m > 0 próbami do przejścia. Kolejna próba jest albo sukcesem, z prawdopodobieństwem p - w którym przypadku j wzrasta do j + 1 -; albo jest to awaria, z prawdopodobieństwem 1 - p --W tym przypadku j jest resetowany do 0 . W obu przypadkach m zmniejsza się o 1 . Skądjthm>0pjj+11−pj0m1
fp,k(j,m)=pfp,k(j+1,m−1)+(1−p)fp,k(0,m−1).
Jako warunki początkowe mamy oczywiste wyniki dla m ≥ 0 ( tj. Widzieliśmy już k w rzędzie) i f p , k ( j , m ) = 0 dla k - j > m ( tzn. nie ma wystarczającej liczby prób, aby uzyskać kfap , k( k , m ) = 1m ≥ 0kfap , k( j , m ) = 0k - j > mkz rzędu). Jest teraz szybki i prosty (przy użyciu programowania dynamicznego lub, ponieważ parametry tego problemu są tak małe, rekurencja) do obliczeń
fap,8(0,25)=18p8−17p9−45p16+81p17−36p18.
Gdy Daje to 80.897 / 43.046.721 ≈ 0,0018793 .p=1/380897/43046721≈0.0018793
Jest to stosunkowo szybki R
kod do symulacji
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()))
Po 3 sekundach obliczeń wyjście wynosi . Chociaż wygląda to wysoko, to tylko 1,7 standardowych błędów jest wyłączonych. Przeprowadziłem kolejne 10 6 iteracji, uzyskując 0,001867 : tylko 0,3 błędy standardowe mniej niż oczekiwano. (Jako podwójną kontrolę, ponieważ wcześniejsza wersja tego kodu zawierała subtelny błąd, uruchomiłem również 400 000 iteracji w Mathematica, uzyskując szacunkową wartość 0,0018475 .)0.002131060.0018670.30.0018475
Wynik ten jest mniejszy niż jedna dziesiąta Oszacowanie w pytaniu. Ale może jeszcze nie w pełni zrozumiałe go: kolejna interpretacja „masz 8 Wszystkie bloki ... aby uzyskać 8 prób skorygowania w rzędzie” jest to, że istota odpowiedź poszukiwane jest równa 1 - ( 1 - f 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 ...