Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
skraim
1 / 1 / 0
Регистрация: 27.05.2015
Сообщений: 15
#1

Случайные неповторяющиеся числа - Программирование Android

27.05.2015, 14:34. Просмотров 456. Ответов 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-и, по одному разу.
Заранее спасибо.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2015, 14:34     Случайные неповторяющиеся числа
Посмотрите здесь:

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

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

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

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

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

Неповторяющиеся числа. - Turbo Pascal
Всем добрый день! Нужна помощь. В текстовом файле t1 записана последовательность целых чисел, разделенных пробелами. Написать...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
27.05.2015, 14:49     Случайные неповторяющиеся числа #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Лучший вариант для решения данной задачи - заполнить массив числами от 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;
    }
Pablito
2459 / 1904 / 591
Регистрация: 12.05.2014
Сообщений: 6,712
Завершенные тесты: 1
27.05.2015, 14:51     Случайные неповторяющиеся числа #3
как можно сделать 137 рандомных чисел от 1 до 10 что бы они не повторялись?
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
27.05.2015, 14:57     Случайные неповторяющиеся числа #4
Паблито, можно) - 1, 1.0000001, 1.0000002, ..., 1.00000138
skraim
1 / 1 / 0
Регистрация: 27.05.2015
Сообщений: 15
27.05.2015, 14:58  [ТС]     Случайные неповторяющиеся числа #5
Цитата Сообщение от Паблито Посмотреть сообщение
как можно сделать 137 рандомных чисел от 1 до 10 что бы они не повторялись?
Я имел ввиду, что 10 чисел - только как пример, чтобы легче работать было. А в конечном виде будет 137 чисел от 1-го до 137-и.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
27.05.2015, 15:40     Случайные неповторяющиеся числа #6
вместо str++;
должен быть
str=random.nextInt(10);
а почему значения все равно повторяются?
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
27.05.2015, 15:42     Случайные неповторяющиеся числа #7
Valakin, ага, и потом думать почему же приложение зависло? Уж в случае с 10 числами очень возможен вариант непрекращающегося цикла - к примеру рандом будет выдавать всегда чило 2, а оно уже есть, генерим по новой - опять 2, оно опять же есть и т.д. пока зарядка не сядет)
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
27.05.2015, 15:49     Случайные неповторяющиеся числа #8
Spelcrawler,
почему рандом всегда будет выдавать 2? в этом проблема?

если знать сколько будет вариантов, но можно сделать выход из цикла когда массив заполниться, конечно если случайные цифры рандомятся разные,
код написан не полностью, я не очень понял вопрос первоначальный
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
27.05.2015, 15:50     Случайные неповторяющиеся числа #9
Valakin, не обязательно всегда 2, это могут быть все числа, но есть вероятность что код будет выдавать всегда число, которое уже есть. По этому такой генератор вполне может зависнуть на долго.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2015, 15:57     Случайные неповторяющиеся числа
Еще ссылки по теме:

Неповторяющиеся числа в textBox - C#
Здравствуйте, суть в том что есть textBox в него записываются числа, не могу сделать проверку, на то что бы одинаковые числа пользователь...

Неповторяющиеся числа java - Java
Почему не работает код? Нужны рандомные 7 чисел. От 0 до 6 включительно. Int.add((int) (Math.random()*7)); do{ ...

Неповторяющиеся рандомные числа - C++
Друзья, Пишу программу для проверки таблицы умножения. В тот момент, когда он должен выдавать пример на решение должен быть рандом...

Сгенерировать неповторяющиеся числа - C++
Доброго всем здравия, нужно генерировать числа от 1 до 5. Чтобы в массиве оказалось только по одному числу от 1 до 5 хаотично....


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

Или воспользуйтесь поиском по форуму:
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
27.05.2015, 15:57     Случайные неповторяющиеся числа #10
после str++; надо поставить i=0; + надо сделать проверку чтобы str за "10" не выскакивала
Yandex
Объявления
27.05.2015, 15:57     Случайные неповторяющиеся числа
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru