Текущий архив: 2004.09.26;
Скачать: CL | DM;
ВнизАлгоритм случайного выбора без повтора Найти похожие ветки
← →
AntiGen (2004-09-11 13:04) [0]Может знает кто такой алгоритм. Это что-то вроде выбора песен из плейлиста,например, в WinAmp или WMP. Причем там всегда возможен переход от одной песни к другой в любом направлении (назад, вперед) с той же неповторяющейся последовательностью.
← →
Profi © (2004-09-11 13:06) [1]AntiGen (11.09.04 13:04)
Создаешь массив случайных чисел (как сделать так, чтобы не повторялись, сам догадаешься) и все!
← →
Yuri Btr © (2004-09-11 13:13) [2]Если используется случайный выбор, то не имеет значения - вперед или назад - вы всегда выбираете новое случайное число.
Например у вас есть список песен. Они идентифицируются по позиции в листе. Тогда выбор следующей будет
Random(Макс. позиция в листе)
В создании формы поставь Randomize
и все.
← →
AntiGen (2004-09-11 13:14) [3]Точно! :)) с утра голова совсем не работает! Спасибо за помощь!
← →
AntiGen (2004-09-11 13:17) [4]2 Yuri Btr: в том то и дело, что хочется вперед\назад. WinAmp запоминает позиции. Помоему Profi тут правильный выход подсказал.
← →
Yuri Btr © (2004-09-11 13:21) [5]to AntiGen
"WinAmp запоминает позиции"
И правда, запоминает... Однако мне всегда казалось что наоборот :)
← →
Alekc (2004-09-11 14:45) [6]Создаёшь два списка - в один суёшь все песни, потом их оттуда выдёргиваешь рандомом по одной и добавляешь во второй (удаляя из первого). Второй играешь с начала до конца. Когда он (второй) закончится - повторяешь операцию :)) Вперёд-назад - последовательный переход по второму.
← →
Mihey_temporary © (2004-09-11 19:39) [7]Заполнение массива случайными неповторяющимися числами:
procedure FillArray(var A: array of Integer);
var
I, S, R: Integer;
begin
for I := 0 to High(A) do A[I] := I;
for i := High(A) downto 0 do begin
R := Random(I);
S := A[R]; A[R] := A[I]; A[I] := S;
end;
end;
Страницы: 1 вся ветка
Текущий архив: 2004.09.26;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.045 c