MODULE RandomNo;   (* Generate random numbers *)

  (* From the book "Modula-2  A Seafarer's Manual and Shipyard Guide" *)
  (* Page 172   adapted "Amiga M2Modula-2"   12 Mar 1988 *)

FROM InOut IMPORT WriteCard,
                  WriteLn,
                  WriteString;
                  
VAR
  i : CARDINAL;				(* counter *)
    
MODULE RandNum;
  EXPORT Random;
  VAR
    Seed : CARDINAL;
    SystemTime[046CH] : CARDINAL;	(* system time *)

  PROCEDURE Random() : CARDINAL;
    BEGIN				(* use mixed congruential formula *)
      Seed := (((Seed * 21) + 13) MOD 256);
      RETURN Seed;
    END Random;
    
  BEGIN					(* RandNum *)
    Seed := SystemTime;			(* set initial seet to time *)
  END RandNum;
  
BEGIN					(* main module *)
  WriteLn;
  WriteString ("Generate 256 random numbers");
  WriteLn;

  FOR i := 1 TO 256 BY 1 DO
    WriteLn;
    WriteCard (Random(),0);
  END;   (* FOR *)

  WriteLn; WriteLn;

END RandomNo.
