干货!用Python实现蒙提霍尔悖论

干货!用Python实现蒙提霍尔悖论

无名氏
2021-10-10 / 0 评论 / 1,160 阅读 / 正在检测是否收录...
什么是蒙提霍尔悖论?

参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人会开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机会率?如果严格按照上述的条件的话,答案是会—换门的话,赢得汽车的机会率是 2/3。
这条问题亦被叫做蒙提霍尔悖论:虽然该问题的答案在逻辑上并不自相矛盾,但十分违反直觉。这问题曾引起一阵热烈的讨论。

代码实现:
'''蒙提霍尔悖论'''

#调用random库
import random
#初始化门列表和被选列表
doors = [0, 0, 0]
s_doors = []
#第一步:将车随机放到其中一扇门后
x = random.randint(0, 2)
doors[x] = 1
#第二步:询问选择者选哪扇门,并标记
print('【0】 【1】 【2】')
choice = int(input('输入选择哪扇门:'))
res = doors.pop(choice)
s_doors.append(res)
#第三步:在未被选的两扇门中,选择并打开有羊的一扇门。
for i in range(len(doors)):
    if doors[i] == 0:
        s_doors.append(doors.pop(i))
        break;
print('我现在帮你排除了一项')
#第四步:询问选择者要不要换门,如果换……否则……
msg = input('接着他又说:“你要不要换没打开的那扇门!?”(换/不换:y/n)')
if msg == 'y':
    res = doors[0] #doors列表中只剩一扇未被选的门
#第五步:判断选择者是否选中车,并显示游戏结果
if res == 1:
    print('恭喜你,你中大奖了!')
else:
    print('很可惜,豪车与你擦肩而过')
3

打赏

海报

正在生成.....

评论 (0)

取消
画质星