掷硬币次获得相同序列的概率1010

机器算法验证 可能性 自习
2022-03-15 10:42:52

假设抛硬币(正面概率为)10 次,如果再独立抛硬币 10 次,两个序列完全匹配的概率是多少?p

我对这个问题一无所知。我试过但不知道如何开始。

3个回答

这个问题有两种合理的解释。 两者都不需要任何计算,只需要仔细推理独立性和不相交的结果。

  1. 以前十次翻转为条件,接下来的十次翻转按顺序匹配它们的机会是多少?

    如果我们以相同的方式重新排序两次翻转的序列,问题将是相同的,因此必须有相同的答案。因此,答案不取决于前十次翻转中结果的特定顺序,而仅取决于出现了多少正面(比如个)。我们现在只需要计算一个特定的此类序列的机会,例如首先连续翻转个正面,然后连续翻转反面。独立性假设立即给出了答案,我将其留给读者。xx10x

  2. 什么是无条件的机会? 也就是说,在掷硬币之前,第二个序列的十个结果与第一个序列相同的几率是多少?

    翻转的独立性允许您以任何顺序考虑它们。一起考虑第一次和第十一次翻转,它们构成两个独立的翻转。它们匹配的机会是两个都是正面或两个都是反面的机会,这(因为这两个事件是不相交的)必须是两个概率之和

    Pr(match)=Pr(HH)+Pr(TT)=p2+(1p)2.

    同样,对于所有与翻转配对当且仅当所有对都匹配时,这两个序列才匹配。由于这些对是不相交的,它们的结果保持独立,立即产生答案,我再次将其留给读者。i10+ii=1,2,,1010


检查答案的一个有趣方法是注意第二个答案必须等于第一个答案,将前十次翻转的所有可能结果乘以它们的机会相加。将两者相等,从推广到 ,并在前的值应用二项式分布,给出了奇怪但容易证明的身份10nxn

x=0n[px(1p)nx](nx)px(1p)nx=(p2+(1p)2)n.

一个更简单但非常有效的检查是将答案与模拟进行比较。这是(例如)和正面R机会的无条件机会的代码组和后组翻转之间的差异数。估计概率是这些计数为零的模拟比例。n10pnn

该代码输出估计值及其标准误差。如果估计值在计算结果的几个标准误差范围内,那么您可能是正确的。当我为运行它时,输出是p=1/3n=10

Estimate  Std.err 
 0.00288  0.00005 

运行一百万次迭代需要一秒钟。

n <- 10
p <- 1/3
n.sim <- 1e6
x <- colSums(matrix((runif(n.sim*n) < p) != (runif(n.sim*n) < p), nrow=n))==0
(round(c(Estimate=mean(x), Std.err=sd(x)/sqrt(n.sim)), 5))

您需要考虑假设给定硬币在较早的抛掷中出现“正面”,“反面”的发生是否取决于先前的事件?

仅当最后一次抛硬币的路径影响最后一次抛硬币时,顺序才有意义。如果我们在没有放回的情况下进行抽样,这将是正确的,但抛硬币的结果应该彼此独立。

以 3 次抛硬币为例,假设第一个实例是 {H,T,H},您可以构建一个可能结果树:

                 First Toss
               /            \
          Head               Tail 
           |                   |
       2nd Toss             2nd Toss
       |      |             |     |
   Head       Tail       Head     Tail
     |         |          |         |
 3rd Toss   3rd Toss   3rd Toss   3rd Toss
  |    |     |    |     |    |     |    |
Head Tail *Head* Tail  Head Tail  Head Tail

标有星号 (*) 的节点表示实现与第一次完全相同的序列,即{H,T,H}

在这里,无论序列如何,您计算的序列的总概率p.(1-p).p都是相同的。

这可以在 R 中模拟如下:

ranvec <- runif(3 * 1000 * 1000)>0.5
ranDataFr <- as.data.frame( matrix( data=ranvec, nrow=1000000, ncol=3) )
names( ranDataFr) <- c("Toss1", "Toss2", "Toss3")
prob_of_HTH <- length( ranDataFr[
                       ranDataFr$Toss1==TRUE
                     & ranDataFr$Toss2==FALSE
                     & ranDataFr$Toss3==TRUE , 1] )/1000000
prob_of_HTH
[1] 0.125456

其中,在适应浮点精度误差后,与解析得出的值大致相同:0.5 x (1 - 0.5) x 0.5 = 0.125

您可以以类似的方式将其扩展为 10 次投掷序列。

假设每次抛硬币都是独立的,并且(十)次抛硬币的第一个序列是,其中表示每次翻转是头或尾。设第翻转的观察值表示为,使得是第次翻转等于第 i 次翻转的观察值概率.X1,X2,,X10i{1,,10}:Xi{H,T}HTithFiP(Xi+10=Fi)i+10i

那么我们要解决的是在接下来的十次翻转(翻转 11 到 20)中重复相同序列的概率由于每次翻转都是独立的,(或者正如其他人所说,硬币是“无记忆的”),我们的条件无关紧要过去。相反,我们只需要计算同样,通过独立性,这个序列中的每个翻转都不依赖于之前的翻转或在 ("memoryless") 之后,将我们的计算简化为乘积其中

P(X11=F1,,X20=F10X1=F1,,X10=F10)
P(X11=F1,,X20=F10)
i=110P(Xi+10=Fi)=i=110pI(Fi=H)+(1p)I(Fi=T)
I()是标准的布尔指标函数。您会发现此表达式的计算结果为,其中是前十次翻转中正面的数量。pn(1p)10nn