样例3:三门问题
描述:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机率?
分析:
主持人开门前VS主持人开门后
不换门获奖概率 = (1/3 * 100%)+(1/3 * 0%)+(1/3 * 0%)=1/3
换门获奖概率 = (1/3 * 0%)+(1/3 * 100%)+(1/3 * 100%) =2/3
代码:
import random
Without_changing_doors= 0#不换门获奖
Changing_doors= 0#换门获奖
N = 100000#试验次数
# 不换门
for i in range(N):
door_list = ["1","2","3"]#三扇门的编号
car = random.choice(door_list)#汽车随机放在某扇门后
challenger = random.choice(door_list)#挑战者随机选择一扇门
if challenger == car:#不换门
Without_changing_doors = Without_changing_doors + 1
#换门
for i in range(N):
door_list = ["1","2","3"]
car = random.choice(door_list)
challenger = random.choice(door_list)
#主持人随机选择一扇门
host_list = ["1","2","3"]
host_list.remove(challenger)#不是挑战者选择的
if car in host_list:
host_list.remove(car)#不是车所在的门
Rest = random.choice(host_list)
#挑战者换剩下的一扇门
door_list.remove(challenger)#去掉已经选过的门
door_list.remove(Rest)#去掉主持人排除的门
challenger = door_list[0]#剩下的门
if challenger == car:
Changing_doors = Changing_doors + 1
print("不换门获奖概率:", Without_changing_doors/N)
print("换门获奖概率:", Changing_doors / N)
结论:换门会增加获奖的概率
如果觉得《蒙特卡罗算法——三门问题》对你有帮助,请点赞、收藏,并留下你的观点哦!