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

如何解决Python代码中np.random.randint引发的ValueError: low >= high错误?

解决np.random.randint的"low >= high"错误

错误原因

当num_1被生成为1时,进入if num_1 < num_2分支后,执行np.random.randint(1, num_1)等价于传入参数(1,1)。而numpy的randint函数要求左边界low必须小于右边界high,此时两者相等就会触发"low >= high"错误。

解决方案

方案1:调整num_1的生成范围

让num_1从2开始生成,确保进入分支时1 < num_1,randint的参数合法:

import numpy as np

while True:
    max_num = 1000
    num_1 = np.random.randint(2, max_num)
    num_2 = np.random.randint(1, max_num)

    if num_1 < num_2:
        num_2 = np.random.randint(1, num_1)
    break

方案2:直接生成符合条件的num_2

跳过分支判断,直接生成小于等于num_1的num_2(如果需要严格小于,就确保num_1至少为2):

import numpy as np

max_num = 1000
num_1 = np.random.randint(1, max_num)
# 生成1到num_1之间的数(包含num_1)
num_2 = np.random.randint(1, num_1 + 1)

如果要求num_2严格小于num_1:

import numpy as np

max_num = 1000
num_1 = np.random.randint(2, max_num)
num_2 = np.random.randint(1, num_1)

方案3:添加边界判断避免非法参数

在分支里检查num_1的值,当num_1为1时重新生成数据,不执行非法的randint调用:

import numpy as np

while True:
    max_num = 1000
    num_1 = np.random.randint(1, max_num)
    num_2 = np.random.randint(1, max_num)

    if num_1 < num_2:
        if num_1 > 1:
            num_2 = np.random.randint(1, num_1)
        else:
            # num_1为1时重新循环生成
            continue
    break

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:40:36