The Ada Program: deck_package.adb
1 with Ada, Ada.Numerics.Discrete_Random, Card_Package;
2 use Ada, Ada.Numerics, Card_Package;
3
4 package body Deck_Package is
5
6 package Int_Random is new Numerics.Discrete_Random (Deck_Range);
7 Int_Seed: Int_Random.Generator;
8
9 procedure Shuffle is
10 N: constant Integer := 75;
11 C: Card_Type;
12 X,Y: Deck_Range;
13 begin
14 for I in 1..N loop
15 X := Int_Random.Random (Int_Seed);
16 Y := Int_Random.Random (Int_Seed);
17 C := Deck (X); Deck(X) := Deck(Y); Deck(Y) := C;
18 end loop;
19 end;
20
21 begin
22 Int_Random.Reset (Int_Seed);
23 for I in Deck'Range loop
24 declare
25 Suit : constant Suit_Type := Suit_Type'Val ((I-1)/13);
26 Count: constant Count_Type := Count_Type'Val ((I mod 13)+1);
27 begin
28 Deck(I) := Card_Package.Card_Type' (Suit, Count);
29 end;
30 end loop;
31 end Deck_Package;