исключить номер из списка случайных сборщиков - PullRequest
0 голосов
/ 03 июня 2018

У меня есть код случайного выбора, который выбирает случайное число для ex от 1 до 6 ... Можете ли вы дать мне метод, как исключить выбранное число из списка случайного выбора ..

import java.util.Random;

Random rand = new Random();

int  n = rand.nextInt(6) + 1;

например: 1.2.3.4.5.6 случайный выбор = 5 1.2.3.4.6 случайный выбор = 2 1.3.4.6 .. и т. д. заранее, ребята

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Вы можете добавить номера, которые уже были выбраны, в ArrayList и выбирать номер, пока номер не будет указан в списке.

// list of numbers that I already picked
ArrayList<Integer> randomNumbersPicked = new ArrayList<>();
// int to save the current random number
int myCurrentRandomNumber;

while(iNeedAnotherNumber){
    do {
        myCurrentRandomNumber = generateRandomNumber(a, b);
    //repeat this until the number is not in the list
    } while (randomNumbersPicked.contains(new Integer(myCurrentRandomNumber)));
    //here there is a unique random number, do what you will
    System.out.println("A new number has been picked: " + myCurrentRandomNumber);
    //add the number to the list so it wont be picked again
    randomNumbersPicked.add(new Integer(myCurrentRandomNumber));
}

С наилучшими пожеланиями!Dknacht.

0 голосов
/ 03 июня 2018

Поместите все действительные числа в ArrayList и вместо этого выберите случайный индекс из списка.Затем удалите это число из списка и повторите.

Моя Java немного ржавая, так что, надеюсь, код, который я пишу, имеет смысл:

ArrayList<int> validOptions = /**/; // make your list with all initial options

int firstIndex = random.Next(validOptions.count());
int firstPick = validOptions.get(firstIndex);
validOptions.removeAt(firstIndex);

int secondIndex = random.Next(validOptions.count());
int secondPick = validOptions.get(secondIndex);
validOptions.removeAt(firstIndex);
...