Исключить номер из списка случайных сборщиков
У меня есть код случайного выбора, который выбирает случайное число для 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);