![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
перемешать стринглист
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]может как то проще можно?