home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / dev / m2 / CycloneModules.lha / modules / txt / Random.mod < prev    next >
Text File  |  1995-03-04  |  790b  |  38 lines

  1. IMPLEMENTATION MODULE Random;
  2.  
  3. (* (C) Copyright 1994 Marcel Timmermans. All rights reserved. *)
  4.  
  5. FROM SYSTEM IMPORT ADR,CAST;
  6. FROM MathIEEESingBas IMPORT Floor;
  7.  
  8. VAR seed1,seed2,seed3:LONGINT;
  9.  
  10. PROCEDURE Randomize():REAL;
  11. VAR rt:REAL;
  12. BEGIN
  13.   INC(seed1);
  14.   seed1:=(seed1 * 706) MOD 500009;
  15.   INC(seed2);
  16.   seed2:=(seed2 * 774) MOD 600011;
  17.   INC(seed3);
  18.   seed3:=(seed3 * 871) MOD 765241;
  19.   rt:=(REAL(seed1)/500009.0+REAL(seed2)/600011.0+REAL(seed3)/765241.0);
  20.   RETURN rt-Floor(rt);
  21. END Randomize;
  22.  
  23. PROCEDURE RND(n:LONGINT):LONGINT;
  24. BEGIN
  25.  RETURN TRUNC(Randomize()*REAL(n))
  26. END RND;
  27.  
  28. PROCEDURE SetSeed(seed:LONGINT);
  29. BEGIN
  30.   seed1:=seed MOD 1000003;
  31.   seed2:=(RND(65000) * RND(65000)) MOD 600011;
  32.   seed3:=(RND(65000) * RND(65000)) MOD 765241;
  33. END SetSeed;
  34.  
  35. BEGIN
  36.  SetSeed(19);
  37. END Random.
  38.