失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 蒙特卡罗算法——三门问题

蒙特卡罗算法——三门问题

时间:2019-07-08 04:51:47

相关推荐

蒙特卡罗算法——三门问题

样例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)

结论:换门会增加获奖的概率

如果觉得《蒙特卡罗算法——三门问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。