bingada_1.0.0_a25771e2/src/q_gen_shuffle.adb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
with Ada.Numerics.Discrete_Random;

package body Q_Gen_Shuffle is


  procedure P_Shuffle (List : in out Array_Type) is

    package Discrete_Random is new Ada.Numerics.Discrete_Random
       (Result_Subtype => Positive);

    use Discrete_Random;

    K : Positive;
    G : Generator;
    T : Element_Type;
  begin
    Reset (G);
    for I in reverse List'Range loop
      K := (Random(G) mod I) + 1;
      T := List(I);
      List(I) := List(K);
      List(K) := T;
    end loop;
  end P_Shuffle;

end Q_Gen_Shuffle;