Как предотвратить дублирование при генерации случайного числа - PullRequest
0 голосов
/ 31 октября 2019

Я хочу, чтобы 7 различных переменных генерировались из 1-36, однако переменные не должны иметь того же числа, что и раньше, без использования массива или массива в самой короткой возможной строке

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);
         }

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Вы можете попробовать это

без использования массива или списка массивов - вы можете использовать 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);
        }
    }
0 голосов
/ 31 октября 2019

Вы можете использовать это

ThreadLocalRandom.current().ints(0, 36).distinct().limit(36).forEach(System.out::println);

, удалить sysout и добавлять значения в переменные столько раз, сколько вы хотите

...