羊车门问题(Python编程)

一、问题描述。
有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。请问:参赛者更换选择后能否增加猜中汽车的机会?

二、问题分析。
首先,问题要求我们算出更换选择与不更换选择时猜中汽车的概率,并进行比较。
在三扇门里选一扇,而且不知道自己选的门后面是什么,之后主持人才打开另外一扇门。
因此我们要列出各种选择后猜中车的情况。
情况一:先选车,不更换选择,则猜中车。
情况二:先选羊1,主持人开启羊2的门,更换选择,则猜中车。
情况三:先选羊2,主持人开启羊1的门,更换选择,则猜中车。
这里分羊1和羊2的原因是:有两只羊分别在两个门后,因而你选择羊的概率为2/3。选择车的概率为1/3。
所以不更换选择时猜中汽车的概率为1/3,更换选择时猜中汽车的概率为2/3。

三、编写程序(使用random库对这个随机事件进行预测)。
1、代码示例:

from random import *
m=n=0       #更换选择的次数为m,不更换选择的次数为n。
k=randint(8000,10000)    
for i in range(k+1):
    a,b=randrange(1,4),randrange(1,4)      #a,b分别为随机生成的自己选中的门序号和车所在的门序号。
    if a==b:                                      
        n+=1
    else :
        m+=1
print("不更换选择而选中车的概率为:{},更换选择而选中车的概率为:{}。".format(n/k,m/k))

2、运行结果:
在这里插入图片描述

四、总结。
1、randint()函数取值范围为闭区间。
2、randrange()函数取值区间左闭右开。

参考资料:https://www.jb51.net/article/126773.htm

  • 17
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
羊车门问题是一个经典的概率问题,假设有三个门,其中一个门后面有一辆汽车,另外两个门后面是羊。现在你可以选择其中一个门,并得到你所选的门后面的奖品。在你做出选择之后,主持人会打开你没有选择的其中一个羊门,并告诉你这扇门后面是一只羊。这时候,你有两个选择:要么坚持最初的选择,要么选另一个未开的门。问题是:换门后中奖的概率是否会变大? 针对这个问题,总体来说,换门后中奖的概率更大。具体解释可参考下面这篇博客:https://blog.csdn.net/qq_38906523/article/details/100533202 下面是 Python 代码实现: ```python import random # 选手不换门 def no_change(): doors = [0, 0, 1] # 三个门,0表示羊,1表示汽车 random.shuffle(doors) # 汽车随机放在某个门后面 player_choice = random.choice([0, 1, 2]) # 选手随机选一个门 return doors[player_choice] # 选手换门 def change(): doors = [0, 0, 1] random.shuffle(doors) player_choice = random.choice([0, 1, 2]) exclude = [player_choice] # 排除选手选择的门 goat_doors = [i for i in range(3) if i not in exclude and doors[i] == 0] # 选出羊门 open_goat_door = random.choice(goat_doors) # 主持人打开一个羊门 exclude.append(open_goat_door) # 排除主持人打开的门 remaining_door = [i for i in range(3) if i not in exclude][0] # 剩下的未选门 return doors[remaining_door] # 多次模拟实验,并计算换门和不换门的中奖概率 n = 10000 # 实验次数 win_no_change = sum([no_change() for _ in range(n)]) / n win_change = sum([change() for _ in range(n)]) / n print("不换门中奖概率:", win_no_change) print("换门中奖概率:", win_change) ``` 结果如下: ``` 不换门中奖概率: 0.3302 换门中奖概率: 0.6676 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值