实施:
private static List<Integer> getRandomDistribution(List<String> unsortedList, int max) {
Random random = new Random();
List<Integer> indexContainer = new ArrayList<>();
for (int i = 0; i < max; i++) {
int index = random.nextInt(max);
// Below is what I don't like,
if (indexContainer.contains(index)) {
i--;
} else {
indexContainer.add(index);
}
}
return indexContainer;
}
基本上它的说法是,直到我找不到所需的唯一随机数。我将继续循环,可能发生的是它可能会长时间循环,从而增加开销。
问题:
注意: 我还必须在 indexContainer 中维护订单。
答案 0 :(得分:4)
由于您正在生成从0到max-1
的所有数字的排列,因此使用从0到max-1
的所有数字填充List会更有意义,然后调用{{1} }。
Collections.shuffle(list)