【发布时间】:2017-05-15 19:57:14
【问题描述】:
我想做一些看似简单的事情,同时用代码证明 Monty Hall,遗憾的是我得到的不是问题的证明,而是完全相反的。无论我是否切换,我在 10000 次模拟中获胜的几率约为 33%。你能检查一下代码,看看它有什么问题吗?请记住,我是一名网络开发人员,所以我的 Python 技能不是很好,代码可能看起来也不是很好(例如,我创建了一个可移动的门列表,其中只有一个变量可以正常工作)。干杯!
import random
av_doors = [1, 2, 3]
door_v = [1, 2, 3]
removable_doors = [1, 2, 3]
score = 0
loses = 0
door = int(input("Choose your door (1-3)"))
pick = int(door)-1
dec = input("Stay or switch? (0/1)")
n = 0
while n < 10000:
removable_doors = [1, 2, 3]
av_doors = [1, 2, 3]
val = random.randint(1,3)
if val == 1:
door_v[0] = 1
door_v[1] = 0
door_v[2] = 0
removable_doors.remove(1)
elif val == 2:
door_v[0] = 0
door_v[1] = 1
door_v[2] = 0
removable_doors.remove(2)
elif val == 3:
door_v[0] = 0
door_v[1] = 0
door_v[2] = 1
removable_doors.remove(3)
try:
removable_doors.remove(int(door))
except:
pass
av_doors.remove(door)
if len(removable_doors) == 2:
rand_door = random.randint(0,1)
if rand_door == 0:
del av_doors[0]
elif rand_door ==1:
del av_doors[1]
else:
del av_doors[0]
if dec == "1":
door = av_doors[0]
else:
pass
pick = door-1
if door_v[pick] == 1:
score+=1
else:
loses+=1
n+=1
print(score)
print(loses)
【问题讨论】:
-
你为什么有
try/except?为什么门不在removable_doors? -
av_doors应该代表什么? -
您实际上并没有在任何地方使用
removable_doors的内容。 -
至于 try/except,如果玩家选择了 1(或任何门 x)并且 1 (x) 被赋值为 1,则它不会在 removed_doors 中。
-
您的主人有时会展示汽车而不是山羊。
标签: python python-3.x math