Im Zweifel Googel fragen:
Zitat von
Wikipedia.com:
To shuffle an array a of n elements (indexes 0..n-1):
Code:
for i from n - 1 downto 1 do
j <- random integer with 0 <= j <= i
exchange a[j] and a[i]
Ich verändere i und j nicht, sondern verschiebe beim Vertausch die beiden Indexe nur um den Offset 'Low(A)'. Dann ergibt sich folgende Lösung:
Delphi-Quellcode:
For i := Length(A)-1 downto 0 do
begin
j := Random (i + 1); // 0 <= j <= i
Swap(i + Low(A), j + Low(A));
end;
Das Bild hängt schief.