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

Python实现生成指定位数范围的唯一随机数列表

解决方案

这事儿不难,核心就是把你给的位数范围转换成对应的数值区间,再结合random.sample就能搞定,我给你捋清楚步骤和代码:

首先明确位数到数值范围的转换逻辑,按照你给出的例子推导通用规则:

  • 当最小位数是1时,数值下限是0;如果最小位数大于1,下限就是10^(最小位数-1)(比如2位数的最小值是10=10¹)
  • 数值上限统一是10^最大位数 - 1(比如4位数的最大值是9999=10⁴-1)

接下来结合这个逻辑写函数,直接用random.sample生成唯一随机数,代码如下:

from random import sample

def generate_unique_random_numbers(min_digits, max_digits, count):
    # 先做参数校验,避免无效输入
    if min_digits < 1:
        raise ValueError("最小位数不能小于1哦")
    if max_digits < min_digits:
        raise ValueError("最大位数不能比最小位数小呀")
    
    # 计算数值范围的上下限
    lower_bound = 0 if min_digits == 1 else 10 ** (min_digits - 1)
    upper_bound = 10 ** max_digits - 1
    
    # 注意range是左闭右开的,所以要把上限+1才能包含最大的那个数
    number_range = range(lower_bound, upper_bound + 1)
    
    # 生成指定数量的唯一随机数
    return sample(number_range, count)

测试示例:

  • 调用generate_unique_random_numbers(1, 4, 5) → 返回5个0到9999之间的唯一随机数
  • 调用generate_unique_random_numbers(1, 1, 3) → 返回3个0到9之间的唯一随机数
  • 调用generate_unique_random_numbers(2, 3, 4) → 返回4个10到999之间的唯一随机数

这样就完全贴合你的需求了,参数校验还能避免一些不合理的输入,比如传入min_digits=0或者max_digits=2、min_digits=3这种情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:29:07