直到第一个正面出现之前的预期投掷次数

机器算法验证 可能性 自习 期望值 伯努利分布 几何分布
2022-01-31 02:26:02

假设反复投掷一枚公平的硬币,直到第一次获得正面。

  • 预计需要投掷多少次?
  • 在获得第一个正面之前将获得的预期尾部数量是多少?
3个回答

这可以使用几何分布来回答,如下所示:

第一次成功(正面)之前的失败次数k - 1 ,成功概率为p(“正面”)由下式给出:

p(X=k)=(1p)k1p

其中k是投掷的总数,包括终止实验的第一个“正面”。

给定p的X的期望值1/p=2

期望值的推导可以在这里找到。隐含的最后一步应如下所示:

ddr11r=1(1r)2插入表达式:

E(X)=p1px=1x rx=p1p r (ddr11r)=p1p r 1(1r)2随着,它简化为r=1p

E(X)=1p,证明它在上面的使用是合理的。]

或者,我们可以使用负二项分布解释为第一次成功之前的失败次数。概率质量函数表示为p(在获得r次成功之前的失败次数,n | 给定每个伯努利试验中成功的特定概率p):

p(n;r,p)=(n+r1r1)pr(1p)n

试验次数的期望值n + r由一般公式给出:

r(1p)

给定我们已知的参数:r = 1p = 0.5

E(n+r;1,0.5)=r1p=110.5=2

因此,我们可以期望在获得第一个正面之前进行两次抛掷,预期的反面数量为E(n+r)r=1

我们可以运行蒙特卡罗模拟来证明它:

   set.seed(1)

p <- 1/2

reps <- 10000                         # Total number of simulations.

tosses_to_HEAD <- 0                   # Setting up an empty vector to add output to.

for (i in 1:reps) {
  head <- 0                           # Set the variable 'head' to 0 with every loop.
  counter <- 0                        # Same forlocal variable 'counter'.
  while (head == 0) {
    head <- head + rbinom(1, 1, p)    # Toss a coin and add to 'head'
    counter <- counter + 1            # Add 1 to 'counter'
  }
  tosses_to_HEAD[i] <- counter        # Append number in counter after getting heads.
}

mean(tosses_to_HEAD)
[1] 2.0097

通过从盒子里抽出一张票来模拟游戏。 有两种票。一个上面写着“停下,你投掷的头”;另一边写着“继续,你扔了尾巴。” 在第一种情况下,预期的额外投掷次数是,而在第二种情况下,预期的额外投掷次数是,比如说——我们还不知道,必须弄清楚。0x

将这些期望写在他们各自的票上:这些是票的价值

我们知道的三件事是:

  1. 绘制“停止”票(值为)的机会是0p

  2. 绘制“继续”票(值为)的机会是x1p

  3. 根据定义,单次平局的期望值是各种彩票的概率加权值之和:

    p×0+(1p)×x=(1p)x.

让我们解释一下这个数字:这是在出现正面之前需要额外投掷的预期数量。由于抽奖对应于抛硬币,因此将获得一张票所需的一次抽奖相加就可以得到预期的投掷次数——这只是本身。使这两个表达式相等,x

x=1+(1p)x.

求解回答了第一个问题。x 由于尾巴的数量总是比平局的次数少一,因此预期的尾巴数也必须比预期的平局数少一。 因此回答了第二个问题。x1


次投掷序列,可以获得第二个直观清晰的解决方案。玩了多少场比赛?答案:正面的数量(如果序列以一系列反面结束,则再加上一个不完整的游戏)。预计有多少头?答案:呼叫这个号码大数弱定律断言,如果足够大,正面正面的实际数量很可能非常接近之间的某个数字给出的平均游戏长度将任意接近npnhpnnxn/hn/(h+1)n/(pn),因此它必须等于本身。x

这导致了一种非常有效的方式来模拟游戏长度的分布这是R代码。它将“正面”记录为布尔数组中的真值,并计算连续真值之间的抛掷。

p <- 1/3                                           # Set the chance of heads
tosses <- runif(1e6) < p                           # Make a million tosses
sim <- diff(c(TRUE, which(tosses)))                # Compute game lengths
hist(sim, xlab="Game length", main="Distribution") # Graph their distribution
mean(sim)                                          # Report the average length

当我在将种子设置为 (相差很小的量。17set.seed(17)x

令 X 为获得正面朝上所需的掷硬币次数。因此,我们需要计算 E(X)(即 X 的期望值)。

无论我们的第一次翻转是什么,我们都可以设置 E(X)。假设我在第一次抛硬币时获得正面,让 E(X|H) 表示剩余抛硬币的次数。同样,让 E(X|T) 表示剩余的硬币翻转次数,因为我在第一次翻转时得到了尾巴。

通过第一步调理,我们有

E(X)=12(1+E(X|H))+12(1+E(X|T))

现在,由于表示在第一次收到正面后剩余的翻转,它将等于 0,因为在获得 1 个正面后我不需要翻转。E(X|H)

并且,,因为我们在获得 1 个正面方面没有取得任何进展。E(X|T)=E(X)

所以,E(X)=12(1+0)+12(1+E(X))

=> E(X)=2