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

如何实现类似random.randint(i,j)的无重复全范围随机整数生成器?

实现指定范围内无重复随机顺序整数序列的方法

当然有办法实现这个需求——本质上就是对指定区间内的所有整数做随机排列,下面以Python为例给出两种简洁的实现方式:

方法1:利用random.shuffle()打乱列表

先创建包含区间所有整数的列表,再用shuffle()直接打乱顺序:

import random

def get_shuffled_range(start, end):
    # 生成包含start到end所有整数的列表(range左闭右开,所以end+1)
    num_list = list(range(start, end + 1))
    # 原地打乱列表顺序
    random.shuffle(num_list)
    return num_list

# 示例调用,输出类似 [5, 3, 4, 2, 0, 1]
print(get_shuffled_range(0, 6))

方法2:利用random.sample()直接抽样

sample()方法可以从序列中无重复抽取指定数量的元素,当抽取数量等于序列总长度时,就等价于随机排列:

import random

def get_shuffled_range(start, end):
    total = end - start + 1
    # 从range中抽取全部元素,返回随机排列的列表
    return random.sample(range(start, end + 1), k=total)

# 示例调用
print(get_shuffled_range(0, 6))

这两种方法都能满足你的要求:返回指定范围内的所有整数,无重复且顺序随机。如果需要逐个获取这些随机整数,也可以遍历返回的列表,每次取一个元素。

内容的提问来源于stack exchange,提问作者T. F. S. de Andrade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:25:12