三扇门问题的解决

问题描述:游戏中有三扇门,只有一扇里面有汽车,另外两扇门是羊,在选手选择了一扇门之后开启之前,主持人打开一个有羊的门询问选手是否更换选择。问更换之后获奖的概率是否会增加?

分析:应用蒙特卡洛重点在使用随机数来模拟事件发生的赢率问题,并且通过多次模拟得到所要计算值的模拟值。在三门问题中,用0,1,2分别代表三扇门的编号,在0-2之间随机生成数代表汽车所在门的编号,再次在0-2之间随机生成一个整数代表参赛者所选择的门的编号。

代码实现:

import random

def game(change,n):
    succeed=0 #设置succeed初始为0
    door = {0,1,2} #设置012三扇门
    for i in range(0,n): #循环n次
        choose=random.randint(0,2) #随机选择一扇门
        car=random.randint(0,2) #随机选择一扇门放入车

        if choose!=car: #如果没有选中车
            if change: #如果更改选择
                a1=True
            else: #如果不更改
                a1=False
        elif choose==car: #如果第一次选中了车
            if change: #如果更改选择
                a1=False
            else: #如果不改变
                a1=True
        if a1: #如果选中 succeed+1
            succeed+=1
    print(succeed/n) #计算概率

print('改变后的概率:')
game(True,10000)
print('不改变的概率:')
game(False,10000)

三扇门问题的解决_第1张图片

 

你可能感兴趣的:(python)