Вы можете выполнить следующие шаги:
1. поддерживать ArrayList
для хранения сгенерированных уникальных случайных чисел (uniqueSortedRandoms
).
2. При вставке новый номер newNumber
в этот ArrayList
, проверить, если массив uniqueSortedRandoms
содержит newNumber
и будет ли newNumber
больше или равна предыдущей. Я предполагаю, что массив отсортирован по возрастанию. Смотрите следующий код -
import java.util.Random;
class FTW {
public static void main (String[]args){
Random I = new Random();
int newNumber;
List<Integer> uniqueSortedRandoms = new ArrayList<Integer>();
for(int counter=1; counter<=20;){
int previousNumber = -1 // initially set to -1
// because nextInt() can be
//range from 0 (inclusive) to 20 exclusive
newNumber = I.nextInt(20);
if(newNumber>previousNumber && !unqueSortedRandoms.contains(newNumber)){
uniqueSortedRandoms.add(newNumber);
previousNumber = newNumber;
counter++;
}
System.out.println(number + " ");
}
}
}
Теперь ArrayList
- uniqueSortedRandoms
содержит все уникальные случайные числа, нужно в порядке возрастания.
Примечание:
1. Если вы используете random.nextInt(20)
, то он будет генерировать случайное число от 0 включительно до 20 эксклюзивных. И вам нужно 20 случайных чисел в отсортированном порядке. Таким образом, список массивов фактически содержит 20 чисел от 0 до 19. В этом случае вы можете просто сгенерировать arrayList
с номерами от 0 до 19. Если требуется 20 случайных чисел в отсортированном порядке (не в диапазоне от 0 до 19), например [ 3, 4, 9, 10, ......], то вы можете использовать очень большой int
в качестве параметра nextInt(int n)
-
newNumber = I.nextInt(100);
Теперь каждый newNumber
будет находиться в диапазоне - 0<=newNumber<100
. Таким образом, ваш массив будет содержать 20 уникальных случайных чисел в порядке возрастания.
2. The counter
увеличивается внутри if-block
(когда вновь генерируется случайное число вставляется в INT ArrayList
), так что цикл продолжается, пока не получим 20-случайное число.
http://stackoverflow.com/questions/8115722/generating-unique-random-numbers-in-java – Satya
класс FTW, на самом деле? .... –
Добавьте их в отсортированный набор, пока вы не достигнете размера 20 – dotvav