Python 面试题

参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。

编程证明计算换门与否的概率

点我看答案
import random

def MontyHall(select, change):
    doors = [1, 2, 3]
    car = random.choice(doors)

    # 主持人开一个不是车、没被选中的门
    left = []
    for d in doors:
        if d != car and d != select:
            left.append(d)
    open = random.choice(left)

    if change == 1:
        select = 6 - open - select
    return select == car

win_change, win_nochange, win_randchange = 0, 0, 0

for i in range(10000):
    select = random.randint(1, 3)
    change = random.randint(0, 1)
    win_randchange += MontyHall(select, change)
    win_change += MontyHall(select, 1)
    win_nochange += MontyHall(select, 0)


print('不一定换门的中奖概率 =', win_randchange / 10000)
print('换门的中奖概率 =', win_change / 10000)
print('不换门中奖概率 =', win_nochange / 10000)

© 2022 刘士. All rights reserved.

结果匹配 ""

    没有匹配的结果 ""