|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.06.2019, 16:32 | #1 |
Регистрация: 12.05.2019
Сообщений: 4
|
Смешать рандомно символы в строке
Здравствуйте всем.
Есть строка string, размер ранее не известен. Нужно перемешать все символы в строке. Чтоб порядок символов изменился. Например строка "abc123" стала "a2b1c3". В общем что-то в этом роде. Задача, казалось бы не трудная, но реализация ее у меня заняла некоторое время. Код получился громоздкий и не очень быстрый, да еще и через костыли. Приводить его здесь просто стыдно. Может быть натолкнете, или у кого есть похожий пример или готовое решения, буду очень признателен за помощь. |
22.06.2019, 19:34 | #2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Вот тут есть алгоритмы перетасовки
https://ru.wikipedia.org/wiki/%D0%A2...82%D1%81%D0%B0 Пример на Паскале (у меня FPC) Код:
Но это вроде как проблема генератора случайных чисел.
Как-то так, ...
|
22.06.2019, 22:55 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
я предложил бы такой код:
https://www.programmersforum.ru/show...8&postcount=13 Код:
|
22.06.2019, 23:36 | #4 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
И от меня пример: https://www.programmersforum.ru/show...060#post960060
Строка — это массив символов. |
23.06.2019, 14:58 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Вадим, только хочу предостеречь - https://www.programmersforum.ru/show...27&postcount=4
ссылка "Как не надо тасовать карты" суть - простое перемешивание не даёт нормальное распределение |
23.06.2019, 15:08 | #6 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
Может, я что-то не понимаю, но, может нормальное распределение не нужно при перемешивании? Я думаю, что для перемешивания нужно равномерное распределение, чтобы вероятность появления какого-то элемента на каком-то месте была везде одинакова?
Вообще, когда я писал тот код, я не задумывался о распределении. Просто был нужен случайный порядок. Или вы опечатались и хотели сказать "равномерное" распределение? По ссылке вы о нём и говорите. |
23.06.2019, 23:12 | #7 | |||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Цитата:
Цитата:
Ну, зачем делать плохо, если можно сделать хорошо? И, в любом случае, нужно знать, что за алгоритм используешь и какие он имеет особенности. |
|||
05.10.2020, 13:04 | #8 |
Пользователь
Регистрация: 16.05.2020
Сообщений: 57
|
На PascalABC.NET это так:
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как заменить символы в строке на С? | masha99 | Помощь студентам | 1 | 30.11.2018 11:29 |
Символы в строке | KT82 | Общие вопросы C/C++ | 4 | 21.01.2016 20:20 |
Символы в строке. | Predator199 | PHP | 1 | 21.10.2012 14:42 |