import random
def play(n,change):
door = [i for i in range(0,n)] # 0-n-1代表 n 个门
has_car = [0 for _ in range(0,n)]
# 生成一个答案
true_answer = random.choice(door)
has_car[true_answer] = 1
# 获取参赛者的答案
your_answer = random.choice(door)
if has_car[your_answer] == 1:
# 如果换
if change == True:
return False
else:
return True
else:
if change == False:
return False
else:
door.remove(your_answer)
# 主持人选一个有山羊的门开启
choose = random.choice(door)
while choose == true_answer:
choose = random.choice(door)
door.remove(choose)
second_answer = random.choice(door)
if has_car[second_answer] == 1:
return True
return False
def fun(n,change):
num = 100000
i = num
num_win = 0
while i!=0:
i -=1
win = play(n,change)
if win:
num_win+=1
return num_win / num
if __name__ == '__main__':
n = int(input("请输入一个数字表示有几个门n\n"))
print("每次都不换的获得车的概率是{}".format(fun(n,False)))
print("每次都换获得车的概率是{}".format(fun(n,True)))
研究三门问题以及更多门问题换门概率
最新推荐文章于 2024-09-28 14:02:07 发布