Das reicht voll und ganz aus.
Delphi-Quellcode:
procedure FisherYatesShuffle( x : TStrings );
var
i : Integer;
begin
x.BeginUpdate;
try
for i := x.Count - 1 downto 1 do
x.Exchange( i, random( i + 1 ) );
finally
x.EndUpdate;
end;
end;
Und ob es nun wegen dem Assert rummst oder man eine
Exception selber schmeißt ist egal, da auch ohne das Gerafffel automatisch eine
Exception hochpoppt, wenn x keine gültige Instanz hat.
Also kann man das bei solch hochkomplexen Routinen auch gleich weglassen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)