Tenendo traccia delle cose è possibile ottenere una formula esatta .
Lasciate che p=1/3 la probabilità di successo e k=8 il numero di successi di fila che si desidera contare. Questi sono stati risolti per il problema. I valori delle variabili sono m , il numero di prove rimaste nel blocco; e j , il numero di successi successivi già osservato. Lasciate che la possibilità di raggiungere alla fine k successi di fila prima di m prove sono esauriranno scritto fp,k(j,m) . Cerchiamo f1/3,8(0,25) .
Supponiamo di avere appena visto la nostra jth successo di fila con m>0 prove di andare. La prossima prova è un successo, con probabilità p - nel qual caso j viene aumentato a j+1 -; altrimenti è un errore, con probabilità 1−p - nel qual caso j viene resettato a 0 . In entrambi i casi, m diminuisce di 1 . da cui
fp , k( j , m ) = p fp , k(j+1,m−1)+(1−p)fp,k(0,m−1).
Come condizioni iniziali abbiamo i risultati ovvi fp,k(k,m)=1 per m≥0 ( ovvero , abbiamo già visto k in una riga) e fp,k(j,m)=0 per k−j>m ( cioè , non ci sono prove sufficienti per ottenere kdi fila). Ora è veloce e semplice (utilizzando la programmazione dinamica o, poiché i parametri di questo problema sono così piccoli, ricorsione) da calcolare
fp,8(0,25)=18p8−17p9−45p16+81p17−36p18.
Quando questo rendimenti 80897 / 43,046721 millions ≈ ,0018,793 mila .p=1/380897/43046721≈0.0018793
Il R
codice relativamente veloce per simulare questo è
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()))
Dopo 3 secondi di calcolo, l'output è . Anche se questo sembra alto, sono solo 1,7 gli errori standard off. Ho eseguito altre 10 6 iterazioni, ottenendo 0,001867 : solo 0,3 errori standard in meno del previsto. (Come doppio controllo, poiché una versione precedente di questo codice aveva un bug sottile, ho anche eseguito 400.000 iterazioni in Mathematica, ottenendo una stima di 0,0018475 .)0.002131060.0018670.30.0018475
Questo risultato è meno di un decimo la stima di nella domanda. Ma forse non ho pienamente capito: un'altra interpretazione di "si dispone di 8 blocchi totali ... per ricevere 8 prove correggere di fila" è che l'essere risposta cercata eguali 1 - ( 1 - f 1 / 3 , 8 ( 0 , 25 ) ) 8 ) = ,0149,358 mila ... .1−(1−(1/3)8)136≈0.02051−(1−f1/3,8(0,25))8)=0.0149358...