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

Python唯一数字生成器开发问题求助

0-100000唯一数字生成器解决方案

原代码核心问题分析

  • 重复值问题:原代码仅用单个变量store记录上一个数字,无法追踪所有已生成的数字,必然出现重复;用'-'代替重复值的做法也不符合“生成数字”的要求。
  • 超大数字问题:random.randint(0, 100000)本身不会生成超出范围的数,大概率是代码执行过程中出现逻辑混乱(比如变量被其他代码篡改),但只要用正确逻辑实现就能彻底避免。

最优实现方案:洗牌法

如果需要生成0到100000之间的所有唯一数字,最高效的方式是先创建包含所有目标数字的列表,再随机打乱顺序。这种方法时间复杂度为O(n),且完全避免重复和范围错误。

代码示例:

import random

# 创建包含0到100000的完整列表(range左闭右开,所以结束值设为100001)
all_numbers = list(range(0, 100001))
# 随机打乱列表顺序
random.shuffle(all_numbers)

# 遍历输出所有唯一数字(按需使用即可,比如逐个取出或批量处理)
for num in all_numbers:
    print(num)

备选方案:已使用数字追踪法

如果不需要生成全部数字,只是随机生成不重复的部分数字,可以用集合记录已使用的数字(集合的查找效率远高于列表),动态检查并生成新数字:

代码示例:

import random

used_numbers = set()
target_count = 5000  # 要生成的唯一数字数量

while len(used_numbers) < target_count:
    num = random.randint(0, 100000)
    if num not in used_numbers:
        used_numbers.add(num)
        print(num)

注意:当需要生成的数字数量接近100001时,这个方法会因为频繁生成重复数字而变慢,此时优先选择洗牌法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 13:50:05