0 / 0 / 3
Регистрация: 08.01.2018
Сообщений: 25
|
||||||
1 | ||||||
Рандом без повторения09.01.2018, 21:32. Показов 1680. Ответов 11
Метки нет (Все метки)
Здравствуйте! Мне нужно сделать рандом так, чтобы после 1 сгенерированного числа это число больше не генерировалось. Я думал решить это так.
Добавлено через 13 минут По-моему я решил проблему!) нужно после всей этой операции снова ставить done = false для того чтобы он заного проходил операцию while.
0
|
09.01.2018, 21:32 | |
Ответы с готовыми решениями:
11
Рандом без повторений Рандом без повторений Рандом без дубликатов Псевдо-рандом без повторений |
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
09.01.2018, 21:52 | 2 |
B_im, тебе такой алгоритм нужен по заданию или ты другого не придумал? Можно использовать словарь: у него ключи уникальны
0
|
0 / 0 / 3
Регистрация: 08.01.2018
Сообщений: 25
|
|
09.01.2018, 22:16 [ТС] | 3 |
другого не придумал. А что, плохой алгоритм?
0
|
1519 / 462 / 126
Регистрация: 09.01.2018
Сообщений: 1,094
|
||||||
09.01.2018, 22:28 | 4 | |||||
Ну вот так, например, можно
0
|
1150 / 742 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
|
||||||
09.01.2018, 22:50 | 5 | |||||
0
|
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
||||||
09.01.2018, 23:06 | 6 | |||||
0
|
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
|
||||||
10.01.2018, 03:48 | 7 | |||||
По-моему ТС хочет отсортировать массив рандомом это можно сделать так:
1
|
12081 / 8389 / 1282
Регистрация: 21.01.2016
Сообщений: 31,601
|
|
10.01.2018, 06:01 | 8 |
B_im, для таких вещей был придуман Регистр сдвига с линейной обратной связью. На пальцах и с картинками объясняется в статье на хабре о заливке экрана в игре Wolfenstein 3D.
1
|
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
|
|
10.01.2018, 07:21 | 9 |
Прикольная реализация правда для колоды карт я бы её не использовал например, потому что из всех возможных комбинаций можно получить лишь столько сколько элементов используется, хотя в действительности их гораздо больше.
0
|
12081 / 8389 / 1282
Регистрация: 21.01.2016
Сообщений: 31,601
|
|
10.01.2018, 07:24 | 10 |
Aferuga, данный хитрый алгоритм позволяет вам перебрать всё множество каково бы оно ни было в размере.
0
|
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
|
|
10.01.2018, 08:18 | 11 |
Usaga, Согласен что алгоритм хитрый и при больших объемах нам нет смысла использовать все наборы комбинаций, но при небольших объемах эта зависимость будет прослеживаться гораздо проще. Можно конечно рандомизировать сдвиг, но тогда появляется вероятность повторений, а это возвращает нас к while описаным выше.
С while есть другая проблема учитывая что Random зависит от часов и тело цикла небольшое он может успеть выдать по 10 одинаковых чисел подряд (в зависимости от машины) и так по кругу с каждым новым числом. Если быть точным n! всех возможных комбинаций, где n-количество элементов. З. Ы. А вообще надо будет взять на заметку такой подход.
0
|
12081 / 8389 / 1282
Регистрация: 21.01.2016
Сообщений: 31,601
|
|
10.01.2018, 08:28 | 12 |
Aferuga, что-то я не понял, что вам в регистре сдвига не понравилось) Какая рандомизация сдвига? Зачем? Чему противоречит размер множества?
0
|
10.01.2018, 08:28 | |
10.01.2018, 08:28 | |
Помогаю со студенческими работами здесь
12
Рандом string'ов без повторений Убрать повторения объекта без использования LINQ colorgrid без повторения Цикл без повторения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |