![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 12.05.2019
Сообщений: 4
|
![]()
Здравствуйте всем.
Есть строка string, размер ранее не известен. Нужно перемешать все символы в строке. Чтоб порядок символов изменился. Например строка "abc123" стала "a2b1c3". В общем что-то в этом роде. Задача, казалось бы не трудная, но реализация ее у меня заняла некоторое время. Код получился громоздкий и не очень быстрый, да еще и через костыли. Приводить его здесь просто стыдно. Может быть натолкнете, или у кого есть похожий пример или готовое решения, буду очень признателен за помощь. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,377
|
![]()
Вот тут есть алгоритмы перетасовки
https://ru.wikipedia.org/wiki/%D0%A2...82%D1%81%D0%B0 Пример на Паскале (у меня FPC) Код:
Но это вроде как проблема генератора случайных чисел.
Как-то так, ...
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
я предложил бы такой код:
https://www.programmersforum.ru/show...8&postcount=13 Код:
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
И от меня пример: https://www.programmersforum.ru/show...060#post960060
Строка — это массив символов. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Вадим, только хочу предостеречь - https://www.programmersforum.ru/show...27&postcount=4
ссылка "Как не надо тасовать карты" суть - простое перемешивание не даёт нормальное распределение |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
Может, я что-то не понимаю, но, может нормальное распределение не нужно при перемешивании? Я думаю, что для перемешивания нужно равномерное распределение, чтобы вероятность появления какого-то элемента на каком-то месте была везде одинакова?
Вообще, когда я писал тот код, я не задумывался о распределении. Просто был нужен случайный порядок. Или вы опечатались и хотели сказать "равномерное" распределение? По ссылке вы о нём и говорите. |
![]() |
![]() |
![]() |
#7 | |||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Цитата:
Цитата:
Ну, зачем делать плохо, если можно сделать хорошо? ![]() И, в любом случае, нужно знать, что за алгоритм используешь и какие он имеет особенности. |
|||
![]() |
![]() |
![]() |
#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 |