Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

перемешать стринглист


Gu ©   (2011-07-11 11:00:00) 

нет ли у стринглиста какой-нить функции, которая бы перемешивала все итемы случайным образом? или алгоритма какого? пока только сделал:
1. добавляем ко всем итемам в начало FormatFloat('0000', random(9999))
2. выполняем stringlist.sort
3. удаляем у всех итемов 4 первых символа

получаем довольно неплохо перемешаный стринглист


Gu   (2011-07-12 06:55:00) [1]

спасибо


MBo   (2011-07-11 14:23:00) [2]

http://en.wikipedia.org/wiki/Fisher–Yates_shuffle


Dimka Maslov   (2011-07-11 12:34:00) [3]

Вызываем Exchange много много раз, определяя индексы при помощи random


Юрий Зотов   (2011-07-11 11:16:00) [4]

Пишем функцию:

function CompareItems(List: TStringList; Index1, Index2: Integer): Integer;
begin
 Result := Random(3) - 1
end;

Затем вызываем метод:

List.CustomSort(CompareItems);

Не факт, что этот способ лучше, но он должен быть быстрее. Надо пробовать и сравнивать.


Anatoly Podgoretsky   (2011-07-11 11:11:00) [5]

> Gu  (11.07.2011 11:00:00)  [0]

Ага и функция удаления четных и нечетных элементов, и функция хорового
пения.


Gu   (2011-07-11 11:02:00) [6]

может как то проще можно?


Наверх

Титульная страница Поиск, карта сайта Написать письмо