home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / M2V11-1.LHA / modula / m2 / RandomNumbers.mod < prev    next >
Encoding:
Modula Implementation  |  1994-09-28  |  515 b   |  23 lines

  1. (* @P- @B- *)
  2. IMPLEMENTATION MODULE RandomNumbers ;
  3. (* Reiser M. & Wirth N. (1992). Programming in OBERON.ACM press          *)
  4.  
  5. VAR
  6.   z : LONGINT ;
  7.  
  8. PROCEDURE Uniform( ) : REAL ;
  9.   CONST a = 16807 ; m = 2147483647 ; q = m DIV a ; r = m MOD a ;
  10.   VAR gamma : LONGINT ;
  11. BEGIN
  12.   gamma := a*(z MOD q)-r*(z DIV q) ;
  13.   IF gamma>0 THEN z := gamma ELSE z := gamma+m END ;
  14.   RETURN FLOAT(z)*(1.0/FLOAT(m))
  15. END Uniform ;
  16.  
  17. PROCEDURE SetSeed( seed : LONGINT ) ;
  18. BEGIN z := seed ;
  19. END SetSeed ;
  20.  
  21. BEGIN z := 314159
  22. END RandomNumbers.
  23.