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

Python生成6个不重复随机数时重复问题及修正咨询

问题分析与修改方案

原代码的判断逻辑完全无效,因为make_lotto()、randrange(1,46)以及append里的randrange(1,46)是三个独立的随机数生成操作——你判断的是前两个随机数是否不等,但最终添加到列表里的是第三个全新的随机数,根本没检查这个要添加的数是否已经存在于lotto列表中,所以必然会出现重复。

下面提供两种可行的修改方案:

方案一:修复原循环逻辑

先固定生成一个随机数,再检查它是否未被加入列表,符合条件再添加:

from random import randrange

def make_lotto():
    return randrange(1, 46)

lotto = []
while len(lotto) < 6:
    num = make_lotto()
    if num not in lotto:
        lotto.append(num)
lotto.sort()
print(lotto)

核心逻辑:每次生成一个固定的num,通过num not in lotto确保这个数还没在列表里,只有满足条件才添加,直到列表长度达到6。

方案二:使用内置方法简化实现

Python的random.sample()可以直接从序列中抽取指定数量的不重复随机元素,代码更简洁高效:

from random import sample

lotto = sample(range(1, 46), 6)
lotto.sort()
print(lotto)

sample(range(1,46), 6)会直接从1到45的整数中随机挑选6个不重复的数,无需手动编写循环判断,从根源避免逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:06:17