setstate man page on NeXTSTEP

Man page or keyword search:  
man Server   1419 pages
apropos Keyword Search (all sections)
Output format
NeXTSTEP logo
[printable version]


RANDOM(3)							     RANDOM(3)

NAME
       random,	srandom, initstate, setstate - better random number generator;
       routines for changing generators

SYNOPSIS
       long random()

       srandom(seed)
       int seed;

       char *initstate(seed, state, n)
       unsigned seed;
       char *state;
       int n;

       char *setstate(state)
       char *state;

DESCRIPTION
       Random uses a non-linear	 additive  feedback  random  number  generator
       employing a default table of size 31 long integers to return successive
       pseudo-random numbers in the range from 0 to (2**31)−1.	The period  of
       this   random   number	generator   is	 very	large,	 approximately
       16*((2**31)−1).

       Random/srandom  have   (almost)	 the   same   calling	sequence   and
       initialization  properties  as  rand/srand.   The  difference  is  that
       rand(3) produces a much less random sequence — in fact, the  low	 dozen
       bits  generated	by  rand  go  through  a cyclic pattern.  All the bits
       generated by random are	usable.	  For  example,	 ``random()&01''  will
       produce a random binary value.

       Unlike srand, srandom does not return the old seed; the reason for this
       is that the amount of state information used is much more than a single
       word.	 (Two	 other	  routines   are   provided   to   deal	  with
       restarting/changing random number generators).  Like rand(3),  however,
       random  will  by	 default  produce  a  sequence	of numbers that can be
       duplicated by calling srandom with 1 as the seed.

       The initstate routine allows a state array, passed in as	 an  argument,
       to  be  initialized  for	 future	 use.  The size of the state array (in
       bytes) is used by initstate to decide how sophisticated a random number
       generator  it  should  use  --  the  more  state, the better the random
       numbers will be.	 (Current "optimal" values for	the  amount  of	 state
       information  are	 8,  32, 64, 128, and 256 bytes; other amounts will be
       rounded down to the nearest known amount.  Using less than 8 bytes will
       cause  an  error).   The seed for the initialization (which specifies a
       starting point  for  the	 random	 number	 sequence,  and	 provides  for
       restarting at the same point) is also an argument.  Initstate returns a
       pointer to the previous state information array.

       Once a state has been initialized, the setstate	routine	 provides  for
       rapid  switching	 between  states.   Setstate  returns a pointer to the
       previous state array; its argument state	 array	is  used  for  further
       random number generation until the next call to initstate or setstate.

       Once  a	state  array  has  been	 initialized, it may be restarted at a
       different point either by calling initstate (with the desired seed, the
       state  array, and its size) or by calling both setstate (with the state
       array) and srandom (with the desired seed).  The advantage  of  calling
       both  setstate and srandom is that the size of the state array does not
       have to be remembered after it is initialized.

       With 256 bytes of state information, the period of  the	random	number
       generator  is  greater  than  2**69 which should be sufficient for most
       purposes.

AUTHOR
       Earl T. Cohen

DIAGNOSTICS
       If initstate is called with less than 8 bytes of state information,  or
       if  setstate detects that the state information has been garbled, error
       messages are printed on the standard error output.

SEE ALSO
       rand(3)

BUGS
       About 2/3 the speed of rand(3C).

4.2 Berkeley Distribution     September 29, 1985		     RANDOM(3)
[top]

List of man pages available for NeXTSTEP

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net