リストをランダム化するメソッドを作成しました:
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;
}
このメソッドに渡すリストには、たとえば 5 つの要素が含まれています。私が作成Random random = new Random(list.size());
しているとき、何を呼び出すrandom.nextInt()
と、リスト要素のインデックスとなるランダムな整数が返されると期待しています。
しかし、(返されると予想される)random.nextInt();
間隔から数値を返す代わりに呼び出すと、 for eg: の値が返されます。これは私に.[0, 4]
-349120689
java.lang.IndexOutOfBoundsException: Index: -349120689, Size: 5
なぜこれが起こっているのですか、これを解決する方法は?