通过跟踪事物,您可以获得精确的公式。
假设为成功的概率,而为要计数的连续成功的次数。这些已解决问题。变量值为,即块中剩余的试验次数;和,已经观察到的连续成功的次数。让我们在用尽试验之前最终连续获得成功的机会记为。我们寻求。ķ = 8 米Ĵ ķ 米˚F p ,ķ(Ĵ ,米)˚F 1 / 3 ,8(0 ,25 )p = 1 / 3k = 8米Ĵķ米Fp ,ķ(j ,m )F1 / 3 ,8(0 ,25 )
假设我们已经连续进行试验就看到了成功。下一次试验是成功的,概率为这种情况下,增加到;否则它是失败的,概率为,在这种情况下重置为。无论哪种情况,减少。何处 m > 0 p j j + 1 1 − p j 0 m 1Ĵ日m > 0pĴj + 11 − pĴ0米1个
Fp ,ķ(j ,m )= p fp ,ķ(j+1,m−1)+(1−p)fp,k(0,m−1).
作为起始条件对于(即,我们已经连续看到),我们得到明显的结果和对于(即,没有足够的试验来连续获取)。现在可以快速而直接地(使用动态编程,或者因为这个问题的参数很小,所以使用递归)进行计算米≥ 0 ķ ˚F p ,ķ(Ĵ ,米)= 0 ķ - Ĵ > 米ķfp,k(k,m)=1m≥0kfp,k(j,m)=0k−j>mk
fp,8(0,25)=18p8−17p9−45p16+81p17−36p18.
当得出。八万零八百九十七/四三〇四六七二一≈ 0.0018793p=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个标准错误。我又进行了次迭代,:仅比预期少标准误差。(仔细检查一下,因为该代码的早期版本存在一个细微的错误,所以我还在Mathematica中运行了400,000次迭代,的估计值为。)10 6 0.001867 0.3 0.00184750.002131060.0018670.30.0018475
此结果小于问题中之一。但是,也许我还没有完全理解它:“您总共有8个区块...连续获得8个正确的试验”的另一种解释是,寻求的答案等于。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 ...