使用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+=1 else: s2+=1 print("不换中奖概率{0},换中奖概率{1}".format(s1/(s1+s2),s2/(s1+s2)))
运行结果: 由此可以验证我们上述推导正确。 为什么答案会选择换,主要原因还是在主持人,主持人不会直接打开有奖品的那扇门,也就是说,如果你蒙对了,他会随机开一扇空的门。如果你蒙错了,他只能开空的那扇门,那么剩下那扇门一定有奖品。那么你第一次蒙对概率大还是蒙错概率大,当然是蒙错概率大,那么换门意味着获奖概率大。