Я пытаюсь получить случайные числа 0 - 499 в наборах 2 на основе того, что вводит пользователь. Например, 234 и 58, и каждый из них задан, но пользователь может запросить, что они имеют 8 наборов. Im пытаясь убедиться, что избыточный номер не показывает вверх, как 234 & 58, 12 & 444, 198 & 58. (58 показали дважды.)предотвращение избыточных случайных чисел
Путь им пытаются предотвратить это, помещая найденные номера в массив, и когда я иду вокруг следующего совпадения, я проверяю массив, чтобы убедиться, что они еще не использовались. Было просто интересно, каким будет лучший способ этого. Как очевидно, с первого раза, ни один номер не был выбран, поэтому мне не нужно проверять. но тогда следующий пойдет вокруг, если я получу избыток? я буду получать числа, а затем проверить массив, и если он уже находится в массиве, как мне вернуться и получить новые числа? Может быть, цикл while?
вот что им делать:
//now add the specified number of random connections
System.out.println();
System.out.println("new connection(s): ");
//array for keeping track of the new connections to prevent redundant add's
int redundant [] = new int[con*2];
for(int i = 1; i <= con; i++){
Random ran = new Random();
if(i == 1){
int ran1 = ran.nextInt(sWorld.length-1) + 1;
int ran2 = ran.nextInt(sWorld.length-1) + 1;
redundant[i - 1] = ran1;
redundant[i] = ran2;
System.out.println(" " + ran1 + " - " + ran2);
}
else{
int ran1 = ran.nextInt(sWorld.length-1) + 1;
int ran2 = ran.nextInt(sWorld.length-1) + 1;
//need help
}
спасибо заранее!
EDIT. Идущий с maethod ниже (с использованием коллекций)
List<Integer> nums = new LinkedList<Integer>();
for(int i = 0; i <= 499; i++){
nums.add(i);
}
//shuffle the collection for more randomness
System.out.println();
System.out.println("new connection(s): ");
for (int x = 1; x <= con; x++){
Collections.shuffle(nums);
Random ran = new Random();
int r1 = nums.remove(ran.nextInt(nums));
int r2 = nums.remove(ran.nextInt(nums));
, но возникли проблемы с получением случайных чисел, любая помощь?
Произвольно сгенерируйте одно число, x, затем выведите x, x + 1, x + 2, ..., x + n% 500. Все еще отлично rando м! –
Нет, это случайный случай, но он не является совершенно случайным, потому что у вас есть шаблон, основанный на модульных классах 500. Шаблон не случайный вообще. Вы не можете генерировать любой возможный сценарий, используя этот шаблон, который не соответствует вашему шаблону (очевидно). Кроме того, ваше описание неверно, так как x может быть 499, а x + 1 - 500, это должно было бы иметь (x + 1)% 500, но шаблон по-прежнему не является случайным. –
http://en.m.wikipedia.org/wiki/Tongue-in-cheek –