RosettaCodeData/Task/Knuth-shuffle/ALGOL-68/knuth-shuffle-1.alg
2013-04-10 14:16:51 -07:00

14 lines
246 B
Text

PROC between = (INT a, b)INT :
(
ENTIER (random * ABS (b-a+1) + (a<b|a|b))
);
PROC knuth shuffle = (REF[]INT a)VOID:
(
FOR i FROM LWB a TO UPB a DO
INT j = between(LWB a, UPB a);
INT t = a[i];
a[i] := a[j];
a[j] := t
OD
);