一道有趣的概率题(Penney's game)

最近看到一个有意思的概率题:
甲乙两人玩掷硬币的游戏。两人连续抛掷硬币,如果最近三次硬币的抛掷结果为“正反反”,则甲胜;如果是“反反正”,则乙胜。问:谁胜的概率更高?
可能大多数人和我一样,第一反应就是不都是1/8(1/2的三次方)的概率嘛。单纯看掷三次硬币的结果好像确实是这样。
来,我们做个小实验验证一下,用python来模拟一下(python代码如下):

import random
p1 = 0
p2 = 0
for i in range(100000):
    last3 = []
    while True:
        x = random.choice([0, 1])
        last3.append(x)
        if len(last3) > 3:
            last3.pop(0)
        if last3 == [1, 0, 0]:
            p1 += 1
            break
        elif last3 == [0, 0, 1]:
            p2 += 1
            break
print("甲(正反反)获胜次数:", p1)
print("乙(反反正)获胜次数:", p2)

我们假设投掷100000次,并记录投掷序列中出现“正反反”和“反反正”次数,然后惊讶的发现结果竟然是这样子的:

(正反反)获胜次数: 74963(反反正)获胜次数: 25037

为什么会这个亚子,甲赢的概率竟然是乙的三倍。实际上这是一个比较经典的概率游戏,它的原名叫做Penney’s game,于1969年被提出,在不少数学书籍和编程算法题中被引用。我们尝试从数学角度来解释一下:
首先我们要注意一下这个游戏的前提条件,“连续抛掷硬币”,这意味着投掷结果是一个序列,例如:正反正反…,我们再看一下甲乙的获胜子序列,“正反反”和“反反正”,甲获胜的可能性比较复杂,但是乙胜的情况却只能是从一开始就一直是反,如下:

反反正
反反反正
反反反反正
......

如果两个反之前一但有正,就会造成甲的胜利。因此乙获胜的概率就是:(1/2)**3 + (1/2)**4+(1/2)**5+…。
这是一个收敛的几何级数,也就是等比数列,可以通过公式求和:a1/(1-r)=(1/8)/(1-1/2) = 1/4。

如果还有些想不通,我们就来修改一下限定条件,我们每投掷三次就重新开始,代码如下:

import random
p1 = 0
p2 = 0
for i in range(100000):
    last3 = []
    for j in range(3):
        last3.append(random.choice([0, 1]))
    if last3 == [1, 0, 0]:
        p1 += 1
    elif last3 == [0, 0, 1]:
        p2 += 1

print("甲(正反反)获胜次数:", p1)
print("乙(反反正)获胜次数:", p2)

结果如下:

(正反反)获胜次数: 12443(反反正)获胜次数: 12527

这样甲乙获胜的概率就是一样的了,这种情况下甲乙获胜的情况相互独立,没有依赖关系,都是1/8。两种情况对比一下是不是就能理解了呢。

参考:
[1].https://mp.weixin.qq.com/s/GayvpEZXXS0vVI6Z4AOm1Q

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值