我有一个大小为 202 且整数为 0...201 的列表。我需要迭代这个列表,对于每个元素,我需要选择 4 个元素,其中一个是当前元素,其余 3 个是随机的、不重复的元素。
例如,
在第一次迭代时,我需要生成 [0, r1, r2, r3],其中 r1, r2, r3 是 1-201 之间的不同随机数;
在第二次迭代时,我需要生成 [1, r1, r2, r3],其中 r1, r2, r3 是 0, 2-201 之间的不同随机数;
在第三次迭代时,我需要生成 [2, r1, r2, r3],其中 r1, r2, r3 是 0-1, 3-201 之间的不同随机数;
我知道一种方法来做到这一点,但它需要太多的时间和空间,因为我将在 Android 应用程序的主线程中执行此操作,所以我可能应该做一些更有效的事情。
最佳答案
通过删除冗余过滤来改进 Miroslav 的方法:
List<Integer> integerList = new ArrayList<>();
for(int i = 0; i < 202; i++) {
integerList.add(i);
}
List<Integer> exclusionList = new ArrayList<>();
exclusionList.addAll(integerList);
for(int element : integerList){
exclusionList.remove(element);
Collections.shuffle(exclusionList);
System.out.println(element + ", " + exclusionList.subList(0, 3));
exclusionList.add(element);
}
关于java - 对于列表中的每个元素,选择该元素和 3 个随机非重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46102651/