山羊门问题的实验

题目:假设你参加一个电视游戏节目,节目现场有三扇门,其中一扇门后面是一辆车,另外两扇门后面则是山羊。主持人让你选择其中的一扇门。不妨假设你选择了一号门吧。主持人故意打开了另外一扇门,比如说三号门,让你看见三号门的后面是山羊。然后主持人问你,“你想改变你的选择,换成二号门吗?”这时候,你会怎么做?


学过概率论都知道,理论上换门后中奖概率应该是2/3

我写了个程序模拟了一下。

实验过程:
Talk is cheap. Show me the code.
#goat_gate.py
from random import randint
from random import choice
from tqdm import trange

def left(a,b):#函数left:3扇门里除了a和b剩下的门里随机选一扇(a和b可能相等)
  l = []
  for i in range(1,4):
    if i!=a and i!=b:
      l.append(i)
  return choice(l)

if __name__ == '__main__':#主程序
  hits = 0 #换门后猜中的次数
  N = 1000000  # 模拟次数。只有一块cpu所以次数就不设太大了。
  for t in trange(N): 
    car = randint(1,3) #随机一扇门里放汽车
    guess = randint(1,3) #参赛者随机选一扇门
    host = left(car,guess) #主持人从剩下的门(除了参赛者选的和汽车所在的)里选一扇门
    change = left(host,guess) #参赛者看到主持人打开的门后的山羊,选择换成另一扇门
    if change == car: 
      hits += 1 #假如猜中,猜中次数+1

  P = hits/N # 猜中次数/模拟次数 = 换门后猜中的概率
  print("换一扇门中奖的概率是{},不换中奖的概率是{}".format(P,1-P))
实验结果:
改变模拟次数多次重复实验,“换一扇门中奖的概率”均在2/3附近。
大家直接用python3运行这段代码,就可以重现这个结果。

实验结论:
就个人而言,这个结论从数学推理的角度并不能很自然的接受。因为这个结论是有些反直觉的,我的直觉觉得相当于两扇门选一扇,应该是1/2。所以概率课上推出这个结果的时候,我并不是真心觉得这个理论上的概率在真实世界是有效的。
因此当时模拟出结果的时候,有点震惊。
这个问题让我重新认识了数学和真实世界的关系。

此文也发布于https://www.zhihu.com/question/19825086/answer/371924991



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值