Python_蒙提霍尔问题的模拟
蒙提霍尔问题的解决:使用Python模拟
蒙提霍尔问题
蒙提霍尔问题(又称三门问题、山羊汽车问题),参赛者面前有三扇关闭着的门,其中一扇的后面是一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,主持人会开启剩下两扇门中的一扇,露出其中一只山羊。主持人其后会问参赛者要不要更换选择,选另一扇仍然关着的门。
更换选择还是不更换选择?
思路
从统计学角度将,更换选择得到汽车的概率更大,原因是:
- 
 如果第一次选择正确,更换选择必定错误 如果第一次选择错误,更换选择必定正确 第一次选择:1/3概率正确,2/3概率不正确
也就是说,【第一次选择错误】的概率(2/3)是【更换选择后必定正确】的概率,所以【更换选择后必定正确】即【更换选择后得到汽车】的概率为2/3,重选更加有利。
Python模拟
编写代码,函数默认为1000次不更换选择。我选择了10000次,分别更换和不更换选择。
import random
(Copyright © https://blog..net/s_gy_zetrov. All Rights Reserved)
def choose(iteration = 1000, change = n):
    win_car = 0
    win_goat = 0
    prize_layout = random.randint(1, 3)
    if prize_layout == 1:
        door = [goat, goat, car]
    elif prize_layout == 2:
        door = [car, goat, goat]
    elif prize_layout == 3:
        door = [goat, car, goat]
    for i in range(1, iteration + 1):
        init_choice = random.randint(0, 2)
        if change == n:
            if door[init_choice] == goat:
                win_goat = win_goat + 1
            else:
                win_car = win_car + 1
        elif change == y:
            if door[init_choice] == goat:
                win_car = win_car + 1
            else:
                win_goat = win_goat + 1
    print("win_car: %d (%.2f%%)" % (win_car, win_car * 100 / iteration))
    print("win_goat: %d (%.2f%%)" % (win_goat, win_goat * 100 / iteration))
if __name__ == __main__:
    print("-------- NOT change scenario --------")
    choose(10000, n) # (Copyright © https://blog..net/s_gy_zetrov. All Rights Reserved)
    print("-------- change scenario --------")
    choose(10000, y) 
输出:(Copyright © . All Rights Reserved)
-------- NOT change scenario -------- win_car: 3369 (33.69%) win_goat: 6631 (66.31%) -------- change scenario -------- win_car: 6683 (66.83%) win_goat: 3317 (33.17%)
更换选择后有66.83%的概率赢得汽车,验证完毕。
peace out : )
(Copyright © . All Rights Reserved)
visitor tracker
下一篇:
			            css颜色渐变到透明怎么写 
			          
			        
