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

Python生成指定范围无重复随机数(排除特定值)的实现疑问

解决Python生成无重复随机数对的问题

你的代码问题在于每次循环都从完整的候选列表里随机选取第一个数,没有排除已选过的值,所以会出现重复。这里提供两种简单的解决方法:

方法一:使用random.sample直接抽取不重复元素

random.sample可以从列表中一次性抽取指定数量的不重复随机元素,完美匹配你的需求:

import random

# 生成1-20中排除3、5的候选列表
first_num_candidates = [i for i in range(1, 21) if i not in (3, 5)]
# 随机选5个不重复的数
selected_first = random.sample(first_num_candidates, 5)

for mm in selected_first:
    nn = random.randint(1, 15)
    print((mm, nn))

方法二:先打乱候选列表再取前N个元素

如果后续还需要继续生成更多不重复的数对,可以先打乱候选列表,再按顺序取元素:

import random

first_num_candidates = [i for i in range(1, 21) if i not in (3, 5)]
random.shuffle(first_num_candidates)  # 原地打乱列表

# 取前5个元素生成数对
for mm in first_num_candidates[:5]:
    nn = random.randint(1, 15)
    print((mm, nn))

另外注意:不要把from random import choice放在循环内部,应该把导入语句放在代码开头,避免重复导入影响效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:17:06