Java 对象 Random 总是返回错误:“Random.nextInt(int) line: not available”

Posted

技术标签:

【中文标题】Java 对象 Random 总是返回错误:“Random.nextInt(int) line: not available”【英文标题】:Java object Random always returns error: "Random.nextInt(int) line: not available" 【发布时间】:2015-04-23 20:50:38 【问题描述】:

我目前正在为学校编写一个程序来测试不同排序算法的效率。尝试创建随机数数组时,Random 对象总是出错。

arraysArrayList<ArrayList<Integer>> 类型,是我测试的一组数组

numTrialsint 类型,是每个数组大小的试验次数(我正在以 10 的不同幂测试不同数组大小)

这是我现在填充数组的代码:

Random randGen = new Random();

for(int i = 0; i < arrays.size(); i++)

    for(int j = 0; j < Math.pow(10.0, i / numTrials); j++)
    
        arrays.get(i).set(j, randGen.nextInt(i));
    

我也尝试通过调用randGen.setSeed(System.currentTimeMillis()) 进行播种,但每次仍然出现错误。

这是错误的屏幕截图:

【问题讨论】:

Random 的确切 class 是什么? 该错误消息对我来说听起来不太可能 - 这正是您所看到的吗?这是编译时错误还是异常? arrays的类型是什么? 除了arrays.get(i) 可能返回 null 并且如果列表太小.set(j, ...) 不起作用,这段代码对我来说似乎很正确。你确定你导入了java.util.Random @BoristheSpider Random 来自java.util.Random @JonSkeet arraysArrayList&lt;ArrayList&lt;Integer&gt;&gt; 类型,正如我在问题中所说。我还用错误的屏幕截图编辑了这个问题。 @***soft 我确保已将其导入。一切都在代码的前面初始化。 【参考方案1】:

nextInt() 有以下检查

if (bound <= 0)
            throw new IllegalArgumentException(BadBound);

当你传递给nextInt() 的第一个参数为零时,你得到了

java.lang.IllegalArgumentException: bound must be positive

【讨论】:

【参考方案2】:

您一定会得到类似random number's bound must be positive 的信息,因为您只能为正数生成随机数。

【讨论】:

好点,但这并不能完全回答问题。不过,这将是一个很棒的评论。 @ErwinBolwidt 但这并不是人们对 Random 的期望。我认为 OP 正在尝试调试某些东西,他正在更改代码,因此他可能会看到。

以上是关于Java 对象 Random 总是返回错误:“Random.nextInt(int) line: not available”的主要内容,如果未能解决你的问题,请参考以下文章

Random 生成随机数

Random.nextBoolean() 无论种子如何,总是返回 True

glGenQueries 总是返回非查询对象,glBeginQuery 返回错误

使用 sender() 获取按钮文本总是返回错误 — 'NoneType' 对象没有属性 'text'

Math.random()

python的标准库 ----random