add directory Minix
This commit is contained in:
127
Minix/2.0.0/wwwman/man3/random.3.html
Normal file
127
Minix/2.0.0/wwwman/man3/random.3.html
Normal file
@@ -0,0 +1,127 @@
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>random(3)</TITLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
<H1>random(3)</H1>
|
||||
<HR>
|
||||
<PRE>
|
||||
|
||||
</PRE>
|
||||
<H2>NAME</H2><PRE>
|
||||
random, srandom, initstate, setstate - better random number generator;
|
||||
routines for changing generators
|
||||
|
||||
|
||||
</PRE>
|
||||
<H2>SYNOPSIS</H2><PRE>
|
||||
<STRONG>#include</STRONG> <STRONG><stdlib.h></STRONG>
|
||||
|
||||
<STRONG>long</STRONG> <STRONG>random(void)</STRONG>
|
||||
<STRONG>void</STRONG> <STRONG>srandom(unsigned</STRONG> <EM>seed</EM><STRONG>)</STRONG>
|
||||
<STRONG>char</STRONG> <STRONG>*initstate(unsigned</STRONG> <EM>seed</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>state</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>)</STRONG>
|
||||
<STRONG>char</STRONG> <STRONG>*setstate(char</STRONG> <STRONG>*</STRONG><EM>state</EM><STRONG>)</STRONG>
|
||||
|
||||
|
||||
</PRE>
|
||||
<H2>DESCRIPTION</H2><PRE>
|
||||
|
||||
<STRONG>Random</STRONG> 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).
|
||||
|
||||
<STRONG>Random/srandom</STRONG> have (almost) the same calling sequence and initialization
|
||||
properties as <STRONG>rand/srand.</STRONG> The difference is that <STRONG><A HREF="../man3/rand.3.html">rand(3)</A></STRONG> 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 <STRONG>random</STRONG> are usable.
|
||||
For example, ``random()&01'' will produce a random binary value.
|
||||
|
||||
Unlike <STRONG>srand</STRONG>, <STRONG>srandom</STRONG> 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 <STRONG><A HREF="../man3/rand.3.html">rand(3)</A></STRONG>, however, <STRONG>random</STRONG> will by default
|
||||
produce a sequence of numbers that can be duplicated by calling <STRONG>srandom</STRONG>
|
||||
with <STRONG>1</STRONG> as the seed.
|
||||
|
||||
The <STRONG>initstate</STRONG> 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 <STRONG>initstate</STRONG> 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. <STRONG>Initstate</STRONG> returns a pointer to the previous state
|
||||
information array.
|
||||
|
||||
Once a state has been initialized, the <STRONG>setstate</STRONG> routine provides for
|
||||
rapid switching between states. <STRONG>Setstate</STRONG> returns a pointer to the
|
||||
previous state array; its argument state array is used for further random
|
||||
number generation until the next call to <STRONG>initstate</STRONG> or <STRONG>setstate</STRONG>.
|
||||
|
||||
|
||||
Once a state array has been initialized, it may be restarted at a
|
||||
different point either by calling <STRONG>initstate</STRONG> (with the desired seed, the
|
||||
state array, and its size) or by calling both <STRONG>setstate</STRONG> (with the state
|
||||
array) and <STRONG>srandom</STRONG> (with the desired seed). The advantage of calling
|
||||
both <STRONG>setstate</STRONG> and <STRONG>srandom</STRONG> 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.
|
||||
|
||||
|
||||
</PRE>
|
||||
<H2>AUTHOR</H2><PRE>
|
||||
Earl T. Cohen
|
||||
|
||||
|
||||
</PRE>
|
||||
<H2>DIAGNOSTICS</H2><PRE>
|
||||
|
||||
If <STRONG>initstate</STRONG> is called with less than 8 bytes of state information, or if
|
||||
<STRONG>setstate</STRONG> detects that the state information has been garbled, error
|
||||
messages are printed on the standard error output.
|
||||
|
||||
|
||||
</PRE>
|
||||
<H2>SEE ALSO</H2><PRE>
|
||||
<STRONG><A HREF="../man3/rand.3.html">rand(3)</A></STRONG>.
|
||||
|
||||
|
||||
</PRE>
|
||||
<H2>NOTES</H2><PRE>
|
||||
<STRONG>initstate</STRONG> and <STRONG>setstate</STRONG> are not declared in <<EM>stdlib</EM>.<EM>h</EM>>, programmers must
|
||||
provide their own declarations.
|
||||
|
||||
|
||||
</PRE>
|
||||
<H2>BUGS</H2><PRE>
|
||||
About 2/3 the speed of <STRONG><A HREF="../man3/rand.3.html">rand(3)</A></STRONG>.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</PRE>
|
||||
</BODY>
|
||||
</HTML>
|
||||
Reference in New Issue
Block a user