home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Programming / tek / util / getrandom.c next >
Encoding:
C/C++ Source or Header  |  2001-05-12  |  482 b   |  35 lines

  1.  
  2. #include "tek/util.h"
  3.  
  4. /* 
  5. **    TEKlib
  6. **    (C) 2001 TEK neoscientists
  7. **    all rights reserved.
  8. **
  9. **    TINT TGetRandom(TINT seed)
  10. **
  11. **    calculate pseudo random number from seed
  12. */
  13.  
  14. TINT TGetRandom(TINT seed)
  15. {
  16.     TUINT lo, hi;
  17.  
  18.     lo = 16807 * (TINT) (seed & 0xffff);
  19.     hi = 16807 * (TINT) ((TUINT) seed >> 16);
  20.     lo += (hi & 0x7fff) << 16;
  21.     if (lo > 2147483647)
  22.     {
  23.         lo &= 2147483647;
  24.         ++lo;
  25.     }
  26.     lo += hi >> 15;
  27.     if (lo > 2147483647)
  28.     {
  29.         lo &= 2147483647;
  30.         ++lo;
  31.     }
  32.     
  33.     return (TINT) lo;
  34. }
  35.