home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / xco212p.zip / SAMPLES / SIMPLE / random.ob2 < prev    next >
Text File  |  1994-04-25  |  553b  |  34 lines

  1. (* From M.Raiser, N.Wirth "Programming in Oberon" *)
  2. MODULE Random;
  3.  
  4. VAR z: LONGINT;
  5.  
  6. PROCEDURE Uniform*(): REAL;
  7.   CONST
  8.     a = 16807;  m = 2147483647;
  9.     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
  14.   ELSE z:=gamma+m
  15.   END;
  16.   RETURN z*(1.0/m)
  17. END Uniform;
  18.  
  19. PROCEDURE rand16*(VAR x: LONGINT);
  20. BEGIN
  21.   x:=ENTIER(Uniform()*10000H);
  22. END rand16;
  23.  
  24. PROCEDURE InitSeed*(seed: LONGINT);
  25. BEGIN
  26.   z:=seed;
  27. END InitSeed;
  28.  
  29. BEGIN
  30.   z:=314159;
  31. END Random.
  32.  
  33.  
  34.