|
1 / 1 / 0
Регистрация: 18.09.2015
Сообщений: 85
|
||||||
Генератор случайных чисел без повторений26.08.2018, 06:21. Показов 50406. Ответов 29
Метки нет (Все метки)
Сижу, ломаю голову - и все никак не получается. Нужно создать массив из случайных чисел в диапозоне от 1 до 7 и чтобы там не было повторений. Я знаю, что есть много вариантов решения, но я выбрал следующий: при генерации числа заносить его в массив, а при генерации следующего пробегаться по массиву в поисках совпадения. Если найдено, то генерировать заново. Написал код, вроде бы все легко, но в ответе все равно проскальзывают повторения. Подскажите, где косяк?
0
|
||||||
| 26.08.2018, 06:21 | |
|
Ответы с готовыми решениями:
29
Генератор случайных чисел без повторений Генератор случайных чисел (без rand)
|
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
|||||||
| 26.08.2018, 06:41 | |||||||
|
Добавлено через 4 минуты попробуй так
0
|
|||||||
|
"C with Classes"
|
||||||
| 26.08.2018, 06:55 | ||||||
|
xXxBadBoyxXx,
1
|
||||||
|
26 / 23 / 12
Регистрация: 25.06.2018
Сообщений: 91
|
||
| 26.08.2018, 07:21 | ||
|
Ошибка здесь.
Все время повторюя - не су
0
|
||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||||||
| 26.08.2018, 07:26 | ||||||
|
xXxBadBoyxXx,
0
|
||||||
|
26 / 23 / 12
Регистрация: 25.06.2018
Сообщений: 91
|
||||||||||||
| 26.08.2018, 07:29 | ||||||||||||
|
Ошибка здесь.
Все время повторяю - не суйте разную логику в одну функцию. Сделай функцию проверки отдельно
0
|
||||||||||||
|
19 / 17 / 7
Регистрация: 18.09.2017
Сообщений: 96
|
||||||
| 26.08.2018, 09:10 | ||||||
|
random_shuffle удалили из стандартной библиотеки. Теперь надо делать вот так:
https://coliru.stacked-crooked... 4347105beb
0
|
||||||
|
"C with Classes"
|
|
| 26.08.2018, 10:12 | |
|
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|
| 26.08.2018, 10:37 | |
|
Посмотрите здесь
Генерация массива целых случайных чисел, которые не повторяются Там есть не вполне пригодные решение, но есть и неплохие.
0
|
|
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
||||||
| 26.08.2018, 17:37 | ||||||
0
|
||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||||||
| 26.08.2018, 20:27 | ||||||
|
Я не сразу врубился в условие. Надо получить случайную перестановку, да? Тогда можно сделать по классике.
Вам сюда. https://ru.wikipedia.org/wiki/... 1%81%D0%B0 А в конце приводится алгоритм Фишера–Йетса в варианте Дуршенфельда А вот и его реализация (очень простая) Рандомные 163 числа до 163 Пожалуй, можно даже привести ее здесь
QuakerRUS, Понимаете, при генерации случайной перестановки требуется, чтобы каждая перестановка получалась с одинаковой вероятностью 1/N! В вашем же алгоритме это никак не получится. Вероятности будут вида k/N2m, где m - число перемешиваний. (Кстати, почему вы взяли m = N, а не m = 2N или m = N/2? Чем обосновано? И именно невозможность дать вразумительное обоснование и вызывает подозрения) Конечно, эти вероятности при увеличении числа перемешиваний будут стремиться к истинной. Но равны ей стать никогда не смогут. Вот обсуждение математического смысла этих вещей Сколько перемешиваний достаточно
1
|
||||||
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 26.08.2018, 21:15 | |
|
Байт, да, вы правы. Вероятность отличается от 1/N. Хотя и не так уж сильно, что при небольшом количестве значений не так заметно. Это, так сказать, самый простой вариант. m = N я взял для хотя бы одной гарантированной перестановки каждого элемента.
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 26.08.2018, 21:20 | ||
|
1/N!
1
|
||
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 26.08.2018, 21:23 | |
|
Байт, я не силен в математике, поэтому факториалы читаю как ваше желание сделать ударение в ваших доводах.
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 26.08.2018, 21:47 | ||
|
Но может быть вам будут любопытны эти темы Пригодилось ли Вам как программисту математическое образование? Тьфу! ошибся в копировании ссылки, а форум не дает исправить
1
|
||
|
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
|
|
| 26.08.2018, 21:50 | |
|
Байт, спасибо. Желание изучить математику поплотнее было, но пока у меня приоритет освоить хотя бы азы программирования. Возможно в будущем у меня руки дойдут и до нее.
0
|
|
| 26.08.2018, 22:11 | |
|
Не по теме: QuakerRUS, Удачи!
0
|
|
|
16 / 11 / 6
Регистрация: 18.07.2018
Сообщений: 51
|
||||||
| 26.08.2018, 22:33 | ||||||
|
Попробуй через булевую переменную
0
|
||||||
|
Велосипедист...
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
|
||||||
| 30.08.2018, 09:14 | ||||||
|
Вот я побаловался с тасованием Фишера–Йетса в варианте Дуршенфельда :
С примером использования
Только есть одна проблема — диапазон чисел должен точно совпадать с кол-вом элементов массива. Мне лень думать каким путем пойти, чтобы была возможность указания диапазона чисел большего, чем сам массив
0
|
||||||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 30.08.2018, 10:41 | ||
|
Добавлено через 6 минут У этого подхода очевидный недостаток - памяти надо выделять на N элементов, а требуется всего K Но на этот счет есть другие алгоритмы Генерация массива целых случайных чисел, которые не повторяются
0
|
||
| 30.08.2018, 10:41 | |
|
Помогаю со студенческими работами здесь
20
Генератор случайных чисел без использования стандартной функции Генератор случайных чисел Генератор случайных чисел
Генератор случайных чисел Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|