其他分享
首页 > 其他分享> > 一道有趣的概率题

一道有趣的概率题

作者:互联网

最近看到一个有意思的概率题:
甲乙两人玩掷硬币的游戏。两人连续抛掷硬币,如果最近三次硬币的抛掷结果为“正反反”,则甲胜;如果是“反反正”,则乙胜。问:谁胜的概率更高?
可能大多数人和我一样,第一反应就是不都是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

标签:p2,概率,正反,反正,一道,p1,last3,有趣,获胜
来源: https://blog.csdn.net/qq_36151472/article/details/100105603