打印生成的 20 个随机数列表 + 打印不同的列表 w/ 来自第一个列表的相同#s w/o 重复#s
Print generated list of 20 random numbers + print different list w/ same #s from first list w/o duplicate #s
我正在尝试编写一个程序,生成 20 个 1 到 20 之间的随机整数,然后将随机数列表打印到屏幕上。在那之后,我想用第一个列表中的相同数字打印一个不同的列表来屏幕,只跳过任何已经打印到屏幕上的数字。目前,我的代码生成从 1 到 20 的 20 个数字。我不知道如何只打印没有重复数字的不同列表。感谢所有提前帮助我的人!
public void randomNumbers(){
System.out.println("Twenty random integers: ");
for (int x = 0; x < 20; x++){
int max = 20; //max value for range
int min = 1; //min value for range
Random rand = new Random();
int randomNum = rand.nextInt((max - min) + 1) + min;//generates random # within range
System.out.println(randomNum);
}
System.out.println("Twenty random integers w/o duplicates: ");
}
这是一种有趣的方法,可以一次性完成 Java 8 个流:
Random rand = new Random();
IntStream.generate(rand::nextInt).limit(20).map(n -> n % 20 + 1)
.peek(System.out::println)
.collect(Collectors.toSet()).forEach(System.out::println);
如果你不习惯流,那么我将其翻译如下:
- 生成=给我源源不断的随机数
- limit =其实只给我前20个
- map = 将数字转换为 1 到 20 之间
- peek = 打印出来
- 收集 = 将它们放在一个集合中
- forEach = 打印出集合中的每一项
如果您需要在没有流的情况下解决这个问题,那么一个简单的机制是在打印数字时将数字添加到集合中:
Random rand = new Random();
Set<Integer> randSet = new TreeSet<>();
for (int x = 0; x < 20; x++){
int randomNum = rand.nextInt(20) + 1;
randSet.add(randomNum);
System.out.println(randomNum);
}
for (Integer randomNum: randSet) {
System.out.println(randomNum);
}
我正在尝试编写一个程序,生成 20 个 1 到 20 之间的随机整数,然后将随机数列表打印到屏幕上。在那之后,我想用第一个列表中的相同数字打印一个不同的列表来屏幕,只跳过任何已经打印到屏幕上的数字。目前,我的代码生成从 1 到 20 的 20 个数字。我不知道如何只打印没有重复数字的不同列表。感谢所有提前帮助我的人!
public void randomNumbers(){
System.out.println("Twenty random integers: ");
for (int x = 0; x < 20; x++){
int max = 20; //max value for range
int min = 1; //min value for range
Random rand = new Random();
int randomNum = rand.nextInt((max - min) + 1) + min;//generates random # within range
System.out.println(randomNum);
}
System.out.println("Twenty random integers w/o duplicates: ");
}
这是一种有趣的方法,可以一次性完成 Java 8 个流:
Random rand = new Random();
IntStream.generate(rand::nextInt).limit(20).map(n -> n % 20 + 1)
.peek(System.out::println)
.collect(Collectors.toSet()).forEach(System.out::println);
如果你不习惯流,那么我将其翻译如下:
- 生成=给我源源不断的随机数
- limit =其实只给我前20个
- map = 将数字转换为 1 到 20 之间
- peek = 打印出来
- 收集 = 将它们放在一个集合中
- forEach = 打印出集合中的每一项
如果您需要在没有流的情况下解决这个问题,那么一个简单的机制是在打印数字时将数字添加到集合中:
Random rand = new Random();
Set<Integer> randSet = new TreeSet<>();
for (int x = 0; x < 20; x++){
int randomNum = rand.nextInt(20) + 1;
randSet.add(randomNum);
System.out.println(randomNum);
}
for (Integer randomNum: randSet) {
System.out.println(randomNum);
}