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

如何从0-999范围抽取两次互不重叠的100个随机数,解决range删除报错

问题解决方法

报错原因

  • Python 3 中range是不可变的惰性序列,没有内置的remove方法,需要先转为列表才能执行删除操作
  • 列表的remove()方法仅支持传入单个待删除元素,无法直接传入整个列表批量删除
  • 原有代码中random.randint(0, 1000)生成的数值范围是01000,不符合你要求的0999的数值集合范围,同时用randint循环抽取的第一次样本可能存在重复值。

最优实现方案

直接使用random.sample()实现无放回抽样,无需手动剔除已抽取元素,代码更简洁高效,天然保证两次抽样结果完全不重叠:

import random
random.seed(42)

# 从0~999的范围中无放回抽取200个不重复的数,前100个为第一次抽样结果,后100个为第二次抽样结果
all_samples = random.sample(range(1000), 200)
first_sample = all_samples[:100]
second_sample = all_samples[100:]

原有逻辑的修正方案

如果你需要沿用「先抽第一次、再剔除元素抽第二次」的原有逻辑,可按以下方式修改代码:

import random
random.seed(42)

# 修正第一次抽样范围为0~999
first_sample = random.sample(range(1000), 100)
# 过滤掉第一次抽到的元素,生成剩余抽样池
remain_pool = [x for x in range(1000) if x not in first_sample]
# 从剩余池中抽取100个不重叠的随机数
second_sample = random.sample(remain_pool, 100)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:54:03