gpt4 book ai didi

python - Monty Hall 模拟返回 50% 的赔率?

转载 作者:行者123 更新时间:2023-12-01 05:12:49 25 4
gpt4 key购买 nike

from random import randint

numberOfDoors = 3

success = 0
attempts = 0

while True:
try:
doors = [0] * numberOfDoors
doors[randint(0, numberOfDoors - 1)] = 1

chosen = randint(0, numberOfDoors - 1)

while numberOfDoors > 2:
notIn = -1
while notIn == -1:
index = randint(0, numberOfDoors - 1)
if doors[index] == 0 and index != chosen:
notIn = index

if notIn < chosen:
chosen -= 1
del doors[notIn]
numberOfDoors -= 1

# doors is 2, so not chosen (0 or 1) will return the opposite (1 or 0)
success += doors[not chosen]
attempts += 1
if attempts % 1000000 == 0:
print float(success) / float(attempts)
except KeyboardInterrupt:
print float(success) / float(attempts)
break

经过几个小时的模拟后,我的结果几乎正好是 50% - 我是否做错了什么?

理论上你选择的门是在 1/3 赔率到 2/3 赔率之间,所以你至少应该高于 50。

This答案似乎和我做了同样的事情(忽略他对蒙蒂的选择没有做任何事情 - 我想说明这个概念)。

最佳答案

您忘记将 numberOfDoors(仍然关闭的门数,对吗?)重置回 3。因为第一个 while True: 的每次迭代都代表一个新的游戏节目运行时,节目开始时所有三扇门最初都关闭。

...
while True:
numberOfDoors = 3
try:
doors = [0] * numberOfDoors
doors[randint(0, numberOfDoors - 1)] = 1
...

下次,尝试添加 print 语句来帮助您调试。在本例中,在分配汽车后立即添加 print Doors 表明 doors 在第一次迭代后只有两个元素。

关于python - Monty Hall 模拟返回 50% 的赔率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23820487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com