You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现蒙提霍尔问题的随机数生成与开门逻辑问题咨询

问题解答

1. 生成三个不重复的门编号

不用反复调用randint(1,3)再做去重判断,直接用random.sample方法就能快速生成无重复的随机序列:

# 从[1,2,3]里随机取3个不重复的数,相当于把三个门的顺序打乱
door_list = random.sample([1,2,3], 3)
# 可以自定义规则分配,比如第一个元素是汽车所在的门
car = door_list[0]

这个方法天然保证输出的三个数值完全不重复,比手动实现去重逻辑效率高,代码也更简洁。

2. 猜中汽车门时随机打开剩余两扇门的其中一扇

两种修改方案,按需选就行:

方案A:只修改你当前写死的分支

直接在对应分支里用random.choice从2、3里随机选一个输出:

elif guess == 1 and guess == car:
    opened_door = random.choice([2,3])
    print(f"Opening door # {opened_door}")

方案B:通用逻辑优化(推荐)

直接筛选所有符合主持人开门规则的门,不用硬编码判断guess的值,后续扩展也方便:

def choice(guess):
    # 筛选可打开的门:不能是用户选的,也不能是藏汽车的
    available_doors = [d for d in [1,2,3] if d != guess and d != car]
    # 随机选一个打开
    opened_door = random.choice(available_doors)
    print(f"Opening door # {opened_door}")
    print("Here is a Goat")

这个方案可以直接替换你原来choice函数里的所有分支判断,还能兼容用户选2、3号门的场景,逻辑更严谨。

另外你现有代码里的next_door函数存在逻辑问题:判断guess == 2的时候打印打开2号门,不符合蒙提霍尔的规则——主持人不会打开用户已经选中的门,建议直接用上面的通用逻辑替换原有分支,减少硬编码错误。

内容的提问来源于stack exchange,提问作者FrocketGaming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:45:04