Der Fisher-Yates ist auf jeden Fall zu bevorzugen.
Auf der Wikipedia Seite macht der zweite Code aber einen Schritt zuviel (unnötig)
Statt wie dort geschrieben
Code:
To shuffle an array a of n elements (indices 0..n-1):
for i from 0 to n - 1 do
j <- random integer with i <= j < n
exchange a[j] and a[i]
braucht man nur bis
n - 2
zu iterieren
Code:
To shuffle an array a of n elements (indices 0..n-1):
for i from 0 to n - 2 do
j <- random integer with i <= j < n
exchange a[j] and a[i]
Beim ersten Beispiel mit
downto
wird das korrekt gemacht
for i from n - 1 downto 1
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)