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 对象总是出错。
arrays
是 ArrayList<ArrayList<Integer>>
类型,是我测试的一组数组
numTrials
是 int
类型,是每个数组大小的试验次数(我正在以 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 arrays
是ArrayList<ArrayList<Integer>>
类型,正如我在问题中所说。我还用错误的屏幕截图编辑了这个问题。 @***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.nextBoolean() 无论种子如何,总是返回 True
glGenQueries 总是返回非查询对象,glBeginQuery 返回错误