[英]How can I avoid duplicates when generating a random list of pairs of numbers?
[英]How to i prevent duplicates when generating a random number
我想要从 1-36 生成 7 个不同的变量,但是如果在最短的可能行内不使用数组或 arraylist,这些变量的数量不得与以前相同
private final int getconsolationprice1=rand.nextInt(36);
private final int getconsolationprice2=rand.nextInt(36);
private final int getconsolationprice3=rand.nextInt(36);
private final int getconsolationprice4=rand.nextInt(36);
private final int getconsolationprice5=rand.nextInt(36);
private final int getconsolationprice6=rand.nextInt(36);
private final int gettopprice=rand.nextInt(36);
while((consolationprize1==consolationprize2)||
(consolationprize1==consolationprize3)||
(consolationprize1==consolationprize4)||
(consolationprize1==consolationprize5)||
(consolationprize1==topprize)||
(consolationprize2==consolationprize1)||
(consolationprize2==consolationprize3)||
(consolationprize2==consolationprize4)||
(consolationprize2==consolationprize5)||
(consolationprize2==topprize)||
(consolationprize3==consolationprize1)||
(consolationprize3==consolationprize2)||
(consolationprize3==consolationprize4)||
(consolationprize3==consolationprize5)||
(consolationprize3==topprize)||
(consolationprize4==consolationprize1)||
(consolationprize4==consolationprize2)||
(consolationprize4==consolationprize3)||
(consolationprize4==consolationprize5)||
(consolationprize4==topprize)||
(consolationprize5==consolationprize1)||
(consolationprize5==consolationprize2)||
(consolationprize5==consolationprize3)||
(consolationprize5==consolationprize4)||
(consolationprize5==topprize)||
(topprize==consolationprize1)||
(topprize==consolationprize2)||
(topprize==consolationprize3)||
(topprize==consolationprize4)||
(topprize==consolationprize5))
{
consolationprize1=rand.nextInt(36);
consolationprize2=rand.nextInt(36);
consolationprize3=rand.nextInt(36);
consolationprize4=rand.nextInt(36);
consolationprize5=rand.nextInt(36);
topprize=rand.nextInt(36);
}
你可以用这个
ThreadLocalRandom.current().ints(0, 36).distinct().limit(36).forEach(System.out::println);
删除 sysout 并根据需要向变量添加值
你可以试试这个
不使用数组或数组列表 - 您可以使用 LinkedHashSet
Random rand = new Random();
Set<Integer> number = new LinkedHashSet<Integer>();
while (number.size() < 7) {
Integer generatedNumber = rand.nextInt(36) + 1;
number.add(generatedNumber);
}
for (Integer integer : number) {
System.out.println(integer);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.