Исключить номер из списка случайных сборщиков

У меня есть код случайного выбора, который выбирает случайное число для 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 ответа

Решение

Вы можете добавить номера, которые уже были выбраны, в 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.

Поместите все действительные числа в 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);
Другие вопросы по тегам