import random
def monty_hall_simulation(trials):
stay_wins, switch_wins = 0, 0
for _ in range(trials):
# 随机分配奖品(0:山羊,1:车)
doors = [0, 0, 1]
random.shuffle(doors)
# 参赛者初始选择
choice = random.randint(0, 2)
# 主持人排除一个山羊门
remain_doors = [i for i in range(3) if i != choice and doors[i] != 1]
host_open = random.choice(remain_doors)
# 换门策略:选择剩下的未开启门
switch_choice = [i for i in range(3) if i != choice and i != host_open][0]
# 统计结果
if doors[choice] == 1:
stay_wins += 1
if doors[switch_choice] == 1:
switch_wins += 1
return stay_wins/trials, switch_wins/trials
# 模拟10,000次实验
stay_prob, switch_prob = monty_hall_simulation(1000000)
print(f"不换门胜率: {stay_prob:.2%},换门胜率: {switch_prob:.2%}")
aW1wb3J0IHJhbmRvbQoKZGVmIG1vbnR5X2hhbGxfc2ltdWxhdGlvbih0cmlhbHMpOgogICAgc3RheV93aW5zLCBzd2l0Y2hfd2lucyA9IDAsIDAKICAgIGZvciBfIGluIHJhbmdlKHRyaWFscyk6CiAgICAgICAgIyDpmo/mnLrliIbphY3lpZblk4HvvIgwOuWxsee+iu+8jDE66L2m77yJCiAgICAgICAgZG9vcnMgPSBbMCwgMCwgMV0KICAgICAgICByYW5kb20uc2h1ZmZsZShkb29ycykgCiAgICAgICAgCiAgICAgICAgIyDlj4LotZvogIXliJ3lp4vpgInmi6kKICAgICAgICBjaG9pY2UgPSByYW5kb20ucmFuZGludCgwLCAgMikKICAgICAgICAKICAgICAgICAjIOS4u+aMgeS6uuaOkumZpOS4gOS4quWxsee+iumXqAogICAgICAgIHJlbWFpbl9kb29ycyA9IFtpIGZvciBpIGluIHJhbmdlKDMpIGlmIGkgIT0gY2hvaWNlIGFuZCBkb29yc1tpXSAhPSAxXQogICAgICAgIGhvc3Rfb3BlbiA9IHJhbmRvbS5jaG9pY2UocmVtYWluX2Rvb3JzKSAKICAgICAgICAKICAgICAgICAjIOaNoumXqOetlueVpe+8mumAieaLqeWJqeS4i+eahOacquW8gOWQr+mXqAogICAgICAgIHN3aXRjaF9jaG9pY2UgPSBbaSBmb3IgaSBpbiByYW5nZSgzKSBpZiBpICE9IGNob2ljZSBhbmQgaSAhPSBob3N0X29wZW5dWzBdCiAgICAgICAgCiAgICAgICAgIyDnu5/orqHnu5PmnpwKICAgICAgICBpZiBkb29yc1tjaG9pY2VdID09IDE6CiAgICAgICAgICAgIHN0YXlfd2lucyArPSAxCiAgICAgICAgaWYgZG9vcnNbc3dpdGNoX2Nob2ljZV0gPT0gMToKICAgICAgICAgICAgc3dpdGNoX3dpbnMgKz0gMQogICAgCiAgICByZXR1cm4gc3RheV93aW5zL3RyaWFscywgc3dpdGNoX3dpbnMvdHJpYWxzCgojIOaooeaLnzEwLDAwMOasoeWunumqjApzdGF5X3Byb2IsIHN3aXRjaF9wcm9iID0gbW9udHlfaGFsbF9zaW11bGF0aW9uKDEwMDAwMDApCnByaW50KGYi5LiN5o2i6Zeo6IOc546HOiB7c3RheV9wcm9iOi4yJX3vvIzmjaLpl6jog5znjoc6IHtzd2l0Y2hfcHJvYjouMiV9Iik=