有趣的概率:三门问题

在这里插入图片描述

什么是三门问题

三门问题亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let’s Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。

在这里插入图片描述

三门问题的意义

换另一扇门会否增加参赛者赢得汽车的机率?

这个问题亦被叫做蒙提霍尔悖论:虽然该问题的答案在逻辑上并不自相矛盾,但十分违反直觉。这问题曾引起一阵热烈的讨论。

答案

参赛选手应该交换另一扇门,因为这样会使得他赢得汽车的概率从1/3增长到2/3。
不妨先思考一下为什么是这样呢?

这里我给出两种思路。

思路1:贝叶斯公式

假设:
事件A——选手选择的门后面是汽车
事件B——主持人开启的一扇门后面是山羊

注:这里事件B已经发生了,所以P(B) = 1

好了我们现在要利用贝叶斯中的先验概率的概念,和贝叶斯公式计算P(A|B)

根据题目不难得到:P(A) = 1/3
而对于P(B|A) = 1

P(A|B) = (P(B|A)*P(A)) / P(B)

  • = (P(B|A)*P(A))
  • = 1 * 1/3 = 1/3

由此我们得到选手一开始选择的门后面是汽车的概率是1/3,因为主持人开启的一扇门后面是山羊,所以最后一扇门是汽车的概率就是2/3。

如果你想拿汽车的话,还是交换吧。

思路2:模拟

就是编程看看呗。
非常简单,但是结果很有说服力。

咱们来看看:

import random

def testThreeDoorsProb(mc = 100000):
    doors = [0, 0, 1]
    host = 0
    braylon = 0
    for _ in range(mc):
        n = random.randint(0, 2)
        if doors[n] != 1:
            boss += 1
        else: 
            braylon += 1
    print('host winning rate : {}%'.format(boss/mc * 100))
    print('Player winning rate : {}%'.format(braylon/mc * 100))

在这里插入图片描述

三门问题有很多扩展,大家理解底层思路是最好的。
大家共勉~

猜你喜欢

转载自blog.csdn.net/qq_40742298/article/details/106919718