本文主要是介绍使用python解决三门问题(Monty Hall Problem)实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述
奖品随机分布在3扇门后,客户随机选择其中一扇,主持人打开另外两扇中任意没有奖品的一扇,问客户选择以下哪种策略赢面更大:
1.坚持原来的选择
2.改选剩下的那扇未打开的门
问题分析
1.如果从主持人的视角来看,无论客户随机打开哪一扇门概率都是1/2。
2.从客户的角度看问题,因为自己先选定一扇门,那主持人肯定不会打开有奖品的那扇门,排除了注册人打开有奖品的那扇门的概率,那么概率就发生了微妙的平衡。
数学推导过程
也就是说,不改变门的情况下中奖概率为1/3,改变门的情况下中奖概率为2/3。
那么我们用一段简单的代码来演示一下:
import random
s1,s2=0,0
#运行10万次
for i in range(1,100000):#定义三个门,0为无,1为有date=[0,0,0]#随机放入一个奖品date[random.randint(0,2)]=1#a是你选定的a=random.randint(0,2)#b是主持人为你打开的空门b=random.randint(0,2)#主持人不能动你的门和有奖品的门while a==b or date[b]==1:b=random.randint(0,2)#中将次数累加if date[a]==1:s1+=1else:s2+=1
print("不换中奖概率{0},换中奖概率{1}".format(s1/(s1+s2),s2/(s1+s2)))
运行结果:
由此可以验证我们上述推导正确。
为什么答案会选择换,主要原因还是在主持人,主持人不会直接打开有奖品的那扇门,也就是说,如果你蒙对了,他会随机开一扇空的门。如果你蒙错了,他只能开空的那扇门,那么剩下那扇门一定有奖品。那么你第一次蒙对概率大还是蒙错概率大,当然是蒙错概率大,那么换门意味着获奖概率大。
这篇关于使用python解决三门问题(Monty Hall Problem)实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!