30 lines
575 B
Plaintext
30 lines
575 B
Plaintext
MODULE Shuffle EXPORTS Main;
|
|
|
|
IMPORT IO, Fmt, Random;
|
|
|
|
VAR a := ARRAY [0..9] OF INTEGER {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
|
|
|
PROCEDURE Shuffle(VAR a: ARRAY OF INTEGER) =
|
|
VAR temp: INTEGER;
|
|
n: INTEGER := NUMBER(a);
|
|
BEGIN
|
|
WITH rand = NEW(Random.Default).init() DO
|
|
WHILE n > 1 DO
|
|
WITH k = rand.integer(0, n - 1) DO
|
|
DEC(n);
|
|
temp := a[n];
|
|
a[n] := a[k];
|
|
a[k] := temp;
|
|
END;
|
|
END;
|
|
END;
|
|
END Shuffle;
|
|
|
|
BEGIN
|
|
Shuffle(a);
|
|
FOR i := FIRST(a) TO LAST(a) DO
|
|
IO.Put(Fmt.Int(a[i]) & " ");
|
|
END;
|
|
IO.Put("\n");
|
|
END Shuffle.
|