gpt4 book ai didi

java - 生成唯一随机数会增加复杂性并可能导致性能开销?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:22:12 38 4
gpt4 key购买 nike

实现:

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;
}

所以基本上就是这样说,直到我找不到所需的唯一随机数。我将继续循环,可能发生的情况是它可能会长时间循环从而增加开销。

问题:

  • int index = random.next(max) 应该决定随机性,我也必须保持顺序。这就是我使用 List
  • 的原因
  • 其次,i-- 是我卡住的地方,因为坦率地说,我不喜欢这个实现。

注意:我还必须维护 indexContainer 中的顺序。

最佳答案

由于您要生成从 0 到 max-1 的所有数字的排列,因此用从 0 到 max-1< 的所有数字填充列表会更有意义 然后调用 Collections.shuffle(list)

Random random = new Random();
List<Integer> indexContainer = new ArrayList<>();
for (int i = 0; i < max; i++) {
indexContainer.add(i);
}
Collections.shuffle(indexContainer, random);

关于java - 生成唯一随机数会增加复杂性并可能导致性能开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38306757/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com