用python观察三门问题的模拟(Monty Hall Problem)

三门问题(Monty Hall Problem)是概率统计中的一个著名的问题,原问题大概如此:

Monty Hall是美国电视节目的主持人,在这个节目中,有一个给嘉宾开奖的环节,开奖的环节是这样的:现在一共有三扇门,其中有一扇门背后是一辆汽车,另外两扇门背后是山羊。现在嘉宾可以选择一扇门,此时主持人会打开另外两扇门中一扇背后是山羊的门,然后会问嘉宾是否要更换之前的选择。嘉宾选择更换或不更换后,主持人会开启嘉宾最终选择的那一扇门,假如开启之后是一辆汽车的话,那么就会将汽车送给嘉宾。

在这个问题中,看似换与不换的概率都是不变的,都是1/3。但是实际上更换选择后能够得到汽车的概率是2/3,不更换选择能够得到汽车的概率是1/3。这个问题的解释方法有很多种,比较严谨的方法是利用贝叶斯公式,概率论中的解释此处不再加以赘述。用python模拟一些,看了下别人的代码不够简洁故在别人的代码上写了一个简洁的。毕竟人生苦短我用python!用python还不简洁是对python的侮辱。

import random 
def do_monty_hall (determine):
    doordic={'door1':0,'door2':0,'door3':0}
    doorlist=list(doordic.keys())
    carchoise=random.choice(doorlist)
    doordic[carchoise]=1
    youchoise=random.choice(doorlist)
    #下面打开一个有山羊的们 这个和结果没有关系 结果只决定与你的初始选择和你要不要换选择
    if youchoise==carchoise:
        if determine==1:
            return 0
        else:
            return 1
    else:
        if determine==1:
            return 1
        else:
            return 0
if __name__ == '__main__' :
    n = int(input('请输入要做三门问题的次数:'))
    right_time1 = 0
    right_time2 = 0
    k = 1
    while k <= n:
        right_time1 += do_monty_hall(1)
        right_time2 += do_monty_hall(0)
        k+=1
    print('若换,做%d次实验,开启正确的门的频率是%f\n'%(n,(right_time1/n)))
    print('若不换,做%d次实验,开启正确的门的频率是%f\n'%(n,(right_time2/n)))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lisheng386

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值