RANDOM.3
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:4k
源码类别:

操作系统开发

开发平台:

C/C++

  1. RANDOM(3)                 Minix Programmer's Manual                  RANDOM(3)
  2. NAME
  3.      random, srandom, initstate, setstate - better  random  number  generator;
  4.      routines for changing generators
  5. SYNOPSIS
  6.      #include <stdlib.h>
  7.      long random(void)
  8.      void srandom(unsigned seed)
  9.      char *initstate(unsigned seed, char *state, int n)
  10.      char *setstate(char *state)
  11. DESCRIPTION
  12.      Random uses  a  non-linear  additive  feedback  random  number  generator
  13.      employing  a  default table of size 31 long integers to return successive
  14.      pseudo-random numbers in the range from 0 to (2**31)-1.   The  period  of
  15.      this random number generator is very large, approximately 16*((2**31)-1).
  16.      Random/srandom have (almost) the same calling sequence and initialization
  17.      properties  as rand/srand. The difference is that rand(3) produces a much
  18.      less random sequence -- in fact, the low dozen bits generated by rand  go
  19.      through  a  cyclic pattern.  All the bits generated by random are usable.
  20.      For example, ``random()&01'' will produce a random binary value.
  21.      Unlike srand, srandom does not return the old seed; the reason  for  this
  22.      is  that  the amount of state information used is much more than a single
  23.      word.  (Two other routines are provided to deal with  restarting/changing
  24.      random number generators).  Like rand(3), however, random will by default
  25.      produce a sequence of numbers that can be duplicated by  calling  srandom
  26.      with 1 as the seed.
  27.      The initstate routine allows a state array, passed in as an argument,  to
  28.      be initialized for future use.  The size of the state array (in bytes) is
  29.      used by initstate to decide how sophisticated a random  number  generator
  30.      it  should  use -- the more state, the better the random numbers will be.
  31.      (Current "optimal" values for the amount of state information are 8,  32,
  32.      64, 128, and 256 bytes; other amounts will be rounded down to the nearest
  33.      known amount.  Using less than 8 bytes will cause an  error).   The  seed
  34.      for  the  initialization (which specifies a starting point for the random
  35.      number sequence, and provides for restarting at the same point)  is  also
  36.      an   argument.   Initstate  returns  a  pointer  to  the  previous  state
  37.      information array.
  38.      Once a state has been initialized,  the  setstate  routine  provides  for
  39.      rapid  switching  between  states.   Setstate  returns  a  pointer to the
  40.      previous state array; its argument state array is used for further random
  41.      number generation until the next call to initstate or setstate.
  42. 5BSD                           September 29, 1985                            1
  43. RANDOM(3)                 Minix Programmer's Manual                  RANDOM(3)
  44.      Once a state array has  been  initialized,  it  may  be  restarted  at  a
  45.      different  point  either by calling initstate (with the desired seed, the
  46.      state array, and its size) or by calling both setstate  (with  the  state
  47.      array)  and  srandom  (with  the desired seed).  The advantage of calling
  48.      both setstate and srandom is that the size of the state  array  does  not
  49.      have to be remembered after it is initialized.
  50.      With 256 bytes of state information, the  period  of  the  random  number
  51.      generator  is  greater  than  2**69  which  should be sufficient for most
  52.      purposes.
  53. AUTHOR
  54.      Earl T. Cohen
  55. DIAGNOSTICS
  56.      If initstate is called with less than 8 bytes of state information, or if
  57.      setstate  detects  that  the  state  information  has been garbled, error
  58.      messages are printed on the standard error output.
  59. SEE ALSO
  60.      rand(3).
  61. NOTES
  62.      initstate and setstate are not declared in <stdlib.h>,  programmers  must
  63.      provide their own declarations.
  64. BUGS
  65.      About 2/3 the speed of rand(3).
  66. 5BSD                           September 29, 1985                            2