home *** CD-ROM | disk | FTP | other *** search
/ Dream 57 / Amiga_Dream_57.iso / Amiga / Programmation / e / Modules / AmigaLib2.lha / Src / AmigaLib / random.e < prev    next >
Encoding:
Text File  |  1995-03-30  |  429 b   |  24 lines

  1. OPT MODULE
  2.  
  3. OPT PREPROCESS
  4.  
  5. DEF rangeSeed
  6.  
  7. EXPORT PROC fastRand(num) IS IF num>0 THEN num*2 ELSE Eor(num*2, $1d872b41)
  8.  
  9. #define UNSIGNED(x) (x AND $FFFF)
  10.  
  11. EXPORT PROC rangeRand(num)
  12.   DEF max
  13.   max:=UNSIGNED(num-1)
  14.   REPEAT
  15.     max:=Shr(max,1)
  16.     rangeSeed:=fastRand(rangeSeed)
  17.   UNTIL (max<=0)
  18.   IF num
  19.     RETURN UNSIGNED(Shr(Mul(UNSIGNED(num), UNSIGNED(rangeSeed)), 16))
  20.   ELSE
  21.     RETURN UNSIGNED(rangeSeed)
  22.   ENDIF
  23. ENDPROC
  24.