首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Monty Hall Python模拟计算

Monty Hall Python模拟计算
EN

Stack Overflow用户
提问于 2016-03-22 08:33:49
回答 1查看 718关注 0票数 1

我正在尝试模拟Monty Hall问题,在这个问题中,有人选择了一扇门,然后随机移走了一扇门--最终肯定是一扇有车的门和一扇没有车的门,其中一扇肯定是有人选择的。虽然我现在不需要模拟/询问使用程序的人他们想要哪扇门,但我在实际设置计算时遇到了问题。当我运行代码时,它输出0,其中is应该大约为66%

代码语言:javascript
复制
import random

doors=[0,1,2]
wins=0

car=random.randint(0,2)
player=random.randint(0,2)

#This chooses the random door removed
if player==car:
    doors.remove.random.randint(0,2)
else:
    doors.remove(car)
    doors.remove(player)

for plays in range(100):
    if car == player:
        wins=wins+1

print(wins) 
EN

回答 1

Stack Overflow用户

发布于 2016-03-22 08:47:20

你需要把你的代码放在循环中,才能让它每次都运行。你还需要确保你只允许第二次有效的选择(他们不能选择移除的门),并且你只移除有效的门(你不能移除带有汽车的门或玩家选择的门)。

代码语言:javascript
复制
import random

wins = 0

for plays in range(100):
    doors = [0,1,2]
    car = random.choice(doors)
    player = random.choice(doors)

    # This chooses the random door removed
    doors.remove(random.choice([d for d in doors if d != car and d != player]))

    # Player chooses again (stay or switch)
    player = random.choice(doors)
    if player == car:
        wins += 1

print(wins)

但是对于Monty Hall问题,您甚至不需要跟踪门。

代码语言:javascript
复制
win_if_stay = 0
win_if_switch = 0
for i in range(100):
    player = random.randint(0, 2)
    car = random.randint(0, 2)
    if player == car:
        win_if_stay += 1
    else:
        win_if_switch += 1
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36144200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档