Итак, у меня есть генератор случайных чисел, где он генерирует 10 чисел между 1 и любыми входами пользователя в качестве максимума. Он работал хорошо, но я хочу сделать так, чтобы он не генерировал повторяющиеся числа. Таким образом, если он генерирует 5, ни один из других номеров не может быть равен 5.Создайте список уникальных случайных чисел
ответ
Вы можете попробовать отбор проб. Начните с пустого набора. Сгенерируйте число, если оно находится в наборе, повторите попытку. То есть продолжайте собирать, пока не найдете номер не в наборе. Как только вы найдете новый номер, добавьте его в набор, а затем верните его пользователю.
Конечно, если было создано большое количество чисел, скажем k, а верхняя граница равна n, тогда время для получения нового номера следует за геометрическим распределением (с вероятностью успеха (nk)/n), поэтому ожидаемое количество выборок, необходимых до того, как вы найдете уникальный номер, - n/(nk).
Если у вас есть небольшой максимум, вы можете использовать Collection.shuffle() список уникальных значений. Из этого вы можете выбрать 10 элементов.
Максимальные значения всегда будут отличаться от программы, которую я делаю. Я мог бы быть где угодно от 5 до 50. А также, это на самом деле выбор случайных букв, я просто получаю его, чтобы получить символ строки в позиции случайного числа. – user2328462
Диапазон должен быть таким же или больше, чем номер, который вы хотите выбрать. Вы не можете получить 10 уникальных значений с максимальным диапазоном менее 10. например. 5. –
Вы не первый, кто задал этот вопрос. См. https://crypto.stackexchange.com/questions/1379/how-to-generate-a-list-of-unique-random-strings для получения общего ответа.
Чтобы гарантировать, что номер не является дубликатом, храните найденные числа в Java SET, чтобы добавить только в том случае, если внутри него нет дубликата.
Алгоритм Построения для генерации случайных чисел может быть что-то вроде:
take the system time as your seed value
use this to get the random numbers
suppose user says number between 1-100
so take system milliseconds%100 so time always changes so maximum probability that you get random numbers.
Таким образом, всегда принимает значение семени мод (%) ваша верхняя граница в этом случае его 100.
int i = 0, r = 0;
boolean ch = true;
int[] list = new int[num];
while (i < num)
{
r = rnd.nextInt(num);
ch = true;
for (int j = 0; j < i; j++)
if (r == list[j])
{
ch = false;
break;
}
if (ch)
{
list[i] = r;
i++;
}
}
добавьте несколько моментов, поясняющих, что делает код и контрольные точки. – Phani
- 1. Создайте большое количество уникальных случайных чисел float32
- 2. Как создать список уникальных случайных чисел?
- 3. выходной список уникальных случайных чисел из строки
- 4. Создание уникальных случайных чисел
- 5. Создание уникальных случайных чисел
- 6. Создание уникальных случайных чисел
- 7. Эффективное создание уникальных случайных чисел
- 8. Создайте массив (не уникальных) случайных чисел в определенном диапазоне
- 9. Создайте массив УНИКАЛЬНЫХ 5-значных случайных чисел в Java?
- 10. Создайте 8 уникальных случайных чисел от 0 до 7
- 11. Создайте 3 уникальных номера из набора чисел
- 12. Список случайных чисел
- 13. Список случайных чисел - arc4random
- 14. Создать список случайных чисел
- 15. Создать набор уникальных случайных чисел в Java
- 16. Создание уникальных случайных чисел эффективно в Java
- 17. Создание уникальных случайных чисел в Livecode
- 18. Как сгенерировать 9 уникальных случайных чисел
- 19. Пять уникальных случайных чисел из подмножества
- 20. 6 различных случайных уникальных чисел php
- 21. Сформировать набор случайных уникальных чисел из интервала
- 22. Использование уникальных случайных чисел для оператора switch
- 23. Создание уникальных случайных чисел Matlab с диапазоном
- 24. Go: Получить набор уникальных случайных чисел
- 25. Пытается создать серию уникальных случайных чисел
- 26. Вставка уникальных случайных чисел в вектор
- 27. Создание уникальных случайных чисел с помощью SQL
- 28. Создание уникальных случайных чисел и проверка дубликатов
- 29. Генерировать массив случайных уникальных чисел в PHP
- 30. Java-массив уникальных случайных целых чисел
Какой язык вы с помощью? –
Прости, пропустил это. Обычно люди отмечают язык, а не включают его в заголовок. (Редактирует для него) –
Одним из решений может быть использование Set вместо списка. Если он генерирует дубликат. set просто игнорирует его, и вы можете снова создать новый номер. Продолжайте это до тех пор, пока размер набора не достигнет предела, то есть 10 номеров в вашем случае. –