ITMISS
使用Java 8+,您可以使用ints方法Random得到一个IntStream随机值distinct和limit若要将流缩减为若干唯一的随机值,请执行以下操作。ThreadLocalRandom.current().ints(0, 100).distinct().limit(5).forEach(System.out::println);Random也有创建LongStreamS和DoubleStream如果你需要的话。如果您想要一个范围内的所有(或大量)数字按随机顺序排列,那么将所有数字添加到列表中,对其进行洗牌,然后取第一个n可能更有效,因为上面的示例目前是通过在所请求的范围内生成随机数并将它们传递到一个集合中来实现的(类似于罗布·基尔蒂的回答),这可能需要生成比传递到限制的数量更多的内容,因为生成一个新的唯一数的概率随着发现的每一个数字而减小。下面是另一个方法的例子:List range = IntStream.range(0, 100).boxed()
.collect(Collectors.toCollection(ArrayList::new));Collections.shuffle(range);range.subList(0, 99).forEach(System.out::println);