Java Random.ints() 生成随机数重复问题及解决方案
在 Java 中,使用'random.ints'方法生成的随机数是可以重复的。这是因为该方法生成的是一个无限流,它会不断生成随机数直到达到指定的大小或者满足其他终止条件。
如果你希望生成不重复的随机数,有几种方法可以实现:
- 使用'distinct'方法:可以使用'distinct'方法从生成的随机数流中移除重复的元素。但是要注意的是,这种方法只适用于生成的随机数范围较小且生成的数量较少的情况。
Random random = new Random();
random.ints(1, 100).distinct().limit(10).forEach(System.out::println);
- 使用'Set'集合:可以使用'Set'集合来存储生成的随机数,由于'Set'不允许重复元素,可以确保不会生成重复的随机数。
Random random = new Random();
Set<Integer> set = new HashSet<>();
while (set.size() < 10) {
set.add(random.nextInt(100));
}
set.forEach(System.out::println);
- 使用洗牌算法:可以生成一个包含所有可能随机数的列表,然后使用洗牌算法(如Fisher-Yates算法)来打乱列表顺序,从而得到不重复的随机数。
Random random = new Random();
List<Integer> list = IntStream.range(1, 100).boxed().collect(Collectors.toList());
Collections.shuffle(list, random);
list.stream().limit(10).forEach(System.out::println);
这些方法可以根据你的需求选择适合的方式来生成不重复的随机数。
原文地址: https://www.cveoy.top/t/topic/pe7I 著作权归作者所有。请勿转载和采集!