反直觉的一个游戏 - 三门问题 (Monty Hall problem)

三门问题是一个著名的概率问题,通过模拟游戏过程,使用Python代码揭示了换门可以显著提高赢得奖品的概率。即使在门的数量增加到100,主持人开启大部分门的情况下,换门策略依然能提升胜率。通过编程实验,我们验证了在多种场景下,换门比不换门的胜率几乎翻倍。
摘要由CSDN通过智能技术生成

三门问题,也叫蒙提霍尔问题(Monty Hall Problem)

以电视节目 - Let's make a deal的主持人蒙提霍命名的一个反直觉问题。

游戏简介

假设有3个门。 其中一个后面藏着宝藏,其余2个都是空门(美国节目中1个后面有汽车,其余的2个是山羊)。 

游戏开始:

首先你先选择一张门,

选好后,主持人帮你在其余2扇没有被选择的门中打开一扇没奖的门。

 

这时候你有一个选择权, 换门还是不换门?

直觉上换不换几率都是50%,那到底几率是多少? 换是不是得奖的机会大一些?

可以用代码来模拟一遍。python

编程就是一步一步来,当然有时候要想清楚直接到达想要到的地方。

第一遍我们就用一步步来的方法走一遍吧。 (代码一部分借鉴了哈佛的CS109)

首先我们先定义下 有3扇门,其中奖品在某一扇门中。 

 

首先安装下 numpy库

1.这个可以用 random.randint来实现。 randint(start, end, size) 随机选择的3个门中间的一个

1 def simulate_prizedoor(nsim):
2     return np.random.randint(0, 3, (nsim))

2.然后我们可以定义下,一开始选择的一扇门。 这里可以用固定选择法,也可以用随机法,数据大的情况下差别不大。这里我们直接用了固定选择第一扇门(0)

1 def simulate_guess(nsim):
2     return np.zeros(nsim, dtype=np.int)

3.然后我们 模拟主持人,开一扇没有奖品的门。

1 def goat_door(prizedoors, guesses):
2     result = np.random.randint(0, 3
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值