Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 27.05.2015
Сообщений: 15

Случайные неповторяющиеся числа

27.05.2015, 14:34. Показов 3453. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно сделать генератор случайных уникальных чисел.
Сам дошел только до такого варианта, но он, понятно, не работает правильно - значения все равно повторяются. В конечном виде программы будет 137 чисел, если это имеет значение.
Java
1
2
3
4
5
6
7
final Random random = new Random();
        str=random.nextInt(10);
        for(int i=0;i<count;i++){
            if (str!=bil[i])
                break;
                        else str++;}
        bil[count]=str;
bil[10] - хранит уже использованные значения, которые не должны повторяться.
Принцип построен на том, что когда находится значение bil[i] равное переменной str, то str не генерируется случайно заново, а к ней прибавляется 1 до момента, пока число не будет уникальным. Использоваться должны все числа от 1-го до 10-и, по одному разу.
Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2015, 14:34
Ответы с готовыми решениями:

Неповторяющиеся случайные числа
Нужно сделать так, чтобы числа от 1 до 3000 рандомно выводились на экран. Но сделать это надо без повторений чисел Никак не пойму как это...

Случайные неповторяющиеся числа
как можно написать программу, в неком диапазоне вычисляет случайные числа, но так, чтобы ни одно число не повторялось

Неповторяющиеся случайные числа
Здравствуйте, помогите пожалуйста Язык программирования C# Console.WriteLine(&quot;Введите размер числовой последовательности n&quot;); ...

9
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
27.05.2015, 14:49
Лучший ответ Сообщение было отмечено skraim как решение

Решение

Лучший вариант для решения данной задачи - заполнить массив числами от y до x, где y - минимальное число, а x - максимальное. Потом его перемешать и достать из него первые z чисел, где z - количество нужных случайных чисел. Ну и пример который генерирует числа от 0 до заданного числа:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public List<Integer> generateRandomNumbers(int totalNumbersCount, int randomNumbersCount){
 
        //Проверка на ошибки.
        if(randomNumbersCount > totalNumbersCount){
            throw new IllegalArgumentException("Количество нужных чисел больше, чем общее количество");
        }
        
        //Генерируем массив чисел от 0 до totalNumbersCount.
        List<Integer> numbers = new ArrayList<>();
        for(int i = 0; i < totalNumbersCount; i++){
            numbers.add(i);
        }
        //Перемешиваем числа в массиве.
        Collections.shuffle(numbers);
        //Переносим первые числа из общего массива, в массив результат в количестве равном randomNumbersCount.
        List<Integer> resultList = new ArrayList<>();
        for(int i = 0; i < randomNumbersCount; i++){
            resultList.add(numbers.get(i));
        }
        
        return resultList;
    }
1
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
27.05.2015, 14:51
как можно сделать 137 рандомных чисел от 1 до 10 что бы они не повторялись?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
27.05.2015, 14:57
Паблито, можно) - 1, 1.0000001, 1.0000002, ..., 1.00000138
0
1 / 1 / 0
Регистрация: 27.05.2015
Сообщений: 15
27.05.2015, 14:58  [ТС]
Цитата Сообщение от Паблито Посмотреть сообщение
как можно сделать 137 рандомных чисел от 1 до 10 что бы они не повторялись?
Я имел ввиду, что 10 чисел - только как пример, чтобы легче работать было. А в конечном виде будет 137 чисел от 1-го до 137-и.
0
 Аватар для Valakin
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
27.05.2015, 15:40
вместо str++;
должен быть
str=random.nextInt(10);
а почему значения все равно повторяются?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
27.05.2015, 15:42
Valakin, ага, и потом думать почему же приложение зависло? Уж в случае с 10 числами очень возможен вариант непрекращающегося цикла - к примеру рандом будет выдавать всегда чило 2, а оно уже есть, генерим по новой - опять 2, оно опять же есть и т.д. пока зарядка не сядет)
0
 Аватар для Valakin
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
27.05.2015, 15:49
Spelcrawler,
почему рандом всегда будет выдавать 2? в этом проблема?

если знать сколько будет вариантов, но можно сделать выход из цикла когда массив заполниться, конечно если случайные цифры рандомятся разные,
код написан не полностью, я не очень понял вопрос первоначальный
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
27.05.2015, 15:50
Valakin, не обязательно всегда 2, это могут быть все числа, но есть вероятность что код будет выдавать всегда число, которое уже есть. По этому такой генератор вполне может зависнуть на долго.
0
 Аватар для Valakin
435 / 101 / 15
Регистрация: 21.02.2015
Сообщений: 845
27.05.2015, 15:57
после str++; надо поставить i=0; + надо сделать проверку чтобы str за "10" не выскакивала
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.05.2015, 15:57
Помогаю со студенческими работами здесь

Случайные неповторяющиеся числа
как создать массив из случайных НЕПОВТОРЯЮЩИХСЯ чисел

Лотерея (случайные неповторяющиеся числа)
Необходимо написать программу на Pascal'е &quot;Лотерея&quot;. Программа должна последовательно вывести 86 чисел из диапазона от 1 до 90. При этом не...

Игра "Покер": как сгенерировать неповторяющиеся случайные числа
итак. пишу игру. покер. использую при создании карт цикл for (int i=0; i &lt; 52; i++) , в нем пробегаю от 1 до 4 (масти) и от 1 до 15...

Случайные неповторяющиеся
Задача известная. Заполнить массив a случайными НЕПОВТОРЯЮЩИМИСЯ числами из диапазона 1 - N для k = N есть изящнейшее...

Неповторяющиеся случайные имена
Добрый день. Поискал по темам про случайные числа, но ответ на свой вопрос не нашёл увы. Немного предыстории, начал изучать Java. На...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru