50 个具有挑战性的概率问题 [04/50]:尝试直至首次成功

一、说明

         你好,我最近对与概率相关的问题产生了兴趣。我偶然发现了 Frederick Mosteller 所著的《五十个具有挑战性的概率问题及其解决方案》这本书。我认为创建一个系列来讨论这些可能作为面试问题出现的迷人问题会很有趣。每篇文章仅包含 1 个问题,使其成为一个总共 50 个部分的系列。让我们潜入并激活我们的脑细胞!

50 个具有挑战性的概率问题 [04/50]:尝试直至首次成功_第1张图片

图片由作者使用 DALL-E 3 提供。

二、问题描述

        问:平均来说,需要掷骰子多少次才能得到 6?

        此问题的关键是贝努力实验的无限次尝试入手.通过二项式实验中的N\rightarrow \infty得得到次数的极限。这是一个传统思路,然而下文中的求解方式更加精彩。

三、解决方案讨论

        我们可以使用几何分布来模拟第一次成功之前的失败次数,因为实验可以进行无限次尝试直到成功。几何分布的假设是:

  • 所建模的现象是一系列独立试验。
  • 每次试验只有两种可能的结果,通常指定为成功(得到 6 分)或失败(未得到 6 分)。
  • 每次试验的成功概率p = 1/6都是相同的。

        可以证明,获得第一次成功的独立试验次数的预期值为1/p

        要证明这一点很简单。第一次试验成功的概率是p乘以1,剩余试验次数的成功概率是(1–p)乘以1 + 平均试验次数(额外 1 来解释第一次失败)。由于独立性假设,试验的平均次数不会改变。令平均试验次数为E[X]。然后我们有:

        E[X] = p * 1 + (1 — p) * (1 + E[X])

        求解这个方程,我们得到E[X] = 1/p。在我们的例子中,p是得到 6 的概率,即1/6,并且E[X] = 1/p = 6

因此,获得 6 所需的平均试验次数为 6。

四、相关Python代码 

import numpy as np

n_simulations = 10000
n_first_success = 0

for _ in range(n_simulations):
    success = False
    count = 0
    while not success:
        count += 1
        roll = np.random.randint(1,7)
        if roll == 6:
            success = True
    n_first_success += count

print(f'Average no. of trials needed to get a 6 = {round(n_first_success/n_simulations)}')

# Outputs:
# Average no. of trials needed to get a 6 = 6

这就是这个 d️ie 问题的全部内容。欢迎任何反馈或问题!该代码可以在我的Github上找到。请继续关注本系列的下一部分!:)

你可能感兴趣的:(数学逻辑概念史,人工智能,机器学习,人工智能)