我已经创建了一个随机化列表的方法:
public <T> List<T> randomize(List<T> list) {
LinkedList<T> randomizedList = new LinkedList<>();
Random random = new Random(list.size());
for (int i = random.nextInt(); i < list.size(); i++) {
randomizedList.add(list.get(i));
}
return randomizedList;
}我传递给这个方法的列表包含了例如五个元素。当我创建Random random = new Random(list.size());时,我希望当我调用random.nextInt()时,它会返回随机整数,这将是列表元素的索引。
但是,当我调用random.nextInt();而不是返回间隔[0, 4]中的数字(我希望返回它)时,它会返回for的值,例如:-349120689。这给了我一个java.lang.IndexOutOfBoundsException: Index: -349120689, Size: 5。
为什么会发生这种情况,以及如何解决?
发布于 2013-02-08 20:24:03
Random构造函数的参数是一个随机种子,而不是它返回的最大值。
而是将最大值传递给nextInt()。
https://stackoverflow.com/questions/14772430
复制相似问题