home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c082_144 / 1.ddi / CLIBSRC1.ZIP / RAND.C < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-10  |  1.8 KB  |  69 lines

  1. /*-----------------------------------------------------------------------*
  2.  * filename - rand.c
  3.  *
  4.  * function(s)
  5.  *        srand - initializes random number generator
  6.  *        rand  - random number generator
  7.  *-----------------------------------------------------------------------*/
  8.  
  9. /*
  10.  *      C/C++ Run Time Library - Version 5.0
  11.  *
  12.  *      Copyright (c) 1987, 1992 by Borland International
  13.  *      All Rights Reserved.
  14.  *
  15.  */
  16.  
  17.  
  18. #include <stdlib.h>
  19.  
  20. #define MULTIPLIER      0x015a4e35L
  21. #define INCREMENT       1
  22.  
  23. static  long    Seed = 1;
  24.  
  25. /*---------------------------------------------------------------------*
  26.  
  27. Name            srand - initializes random number generator
  28.  
  29. Usage           void srand(unsigned seed);
  30.  
  31. Prototype in    stdlib.h
  32.  
  33. Description     see rand below
  34.  
  35. Return value    Nothing
  36.  
  37. *---------------------------------------------------------------------*/
  38. void srand(unsigned seed)
  39. {
  40.         Seed = seed;
  41. }
  42.  
  43.  
  44. /*---------------------------------------------------------------------*
  45.  
  46. Name            rand - random number generator
  47.  
  48. Usage           int rand(void);
  49.  
  50. Related
  51. functions usage void srand(unsigned seed);
  52.  
  53. Prototype in    stdlib.h
  54.  
  55. Description     rand uses a multiplicative congruential random number
  56.                 generator with period 2^32 to return successive pseudo-
  57.                 random numbers in the range from 0 to 2^15 - 1.
  58.  
  59.                 The generator is reinitialized by calling srand with an
  60.                 argument value of 1. It can be set to a new starting point by
  61.                 calling srand with a given seed number.
  62.  
  63. *---------------------------------------------------------------------*/
  64. int rand(void)
  65. {
  66.         Seed = MULTIPLIER * Seed + INCREMENT;
  67.         return((int)(Seed >> 16) & 0x7fff);
  68. }
  69.