--- random.3 2004-11-25 11:38:42.000000000 -0800 +++ random.3.edit 2006-07-12 11:25:20.000000000 -0700 @@ -36,32 +36,45 @@ .Dt RANDOM 3 .Os .Sh NAME +.Nm initstate , .Nm random , +.Nm setstate , .Nm srandom , -.Nm srandomdev , -.Nm initstate , -.Nm setstate +.Nm srandomdev .Nd better random number generator; routines for changing generators .Sh LIBRARY .Lb libc .Sh SYNOPSIS .In stdlib.h +.Ft char * +.Fo initstate +.Fa "unsigned seed" +.Fa "char *state" +.Fa "size_t size" +.Fc .Ft long -.Fn random void +.Fo random +.Fa void +.Fc +.Ft char * +.Fo setstate +.Fa "const char *state" +.Fc .Ft void -.Fn srandom "unsigned long seed" +.Fo srandom +.Fa "unsigned seed" +.Fc .Ft void -.Fn srandomdev void -.Ft char * -.Fn initstate "unsigned long seed" "char *state" "long n" -.Ft char * -.Fn setstate "char *state" +.Fo srandomdev +.Fa void +.Fc .Sh DESCRIPTION The .Fn random function -uses a non-linear additive feedback random number generator employing a -default table of size 31 long integers to return successive pseudo-random +uses a non-linear, additive feedback, random number generator, employing a +default table of size 31 long integers. +It returns successive pseudo-random numbers in the range from 0 to .if t 2\u\s731\s10\d\(mi1. .if n (2**31)\(mi1. @@ -82,7 +95,7 @@ .Xr rand 3 produces a much less random sequence \(em in fact, the low dozen bits generated by rand go through a cyclic pattern. -All the bits generated by +All of the bits generated by .Fn random are usable. For example, @@ -102,7 +115,7 @@ .Pp The .Fn srandomdev -routine initializes a state array using the +routine initializes a state array, using the .Xr random 4 random number device which returns good random numbers, suitable for cryptographic use. @@ -127,7 +140,7 @@ 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 +the random number sequence and provides for restarting at the same point) is also an argument. The .Fn initstate @@ -166,7 +179,7 @@ With 256 bytes of state information, the period of the random number generator is greater than .if t 2\u\s769\s10\d, -.if n 2**69 +.if n 2**69 , which should be sufficient for most purposes. .Sh AUTHORS .An Earl T. Cohen @@ -177,11 +190,36 @@ .Fn setstate detects that the state information has been garbled, error messages are printed on the standard error output. +.Sh LEGACY SYNOPSIS +.Fd #include <stdlib.h> +.Pp +.Ft char * +.br +.Fo initstate +.Fa "unsigned long seed" +.Fa "char *state" +.Fa "long size" +.Fc ; +.Pp +.Ft char * +.br +.Fo setstate +.Fa "char *state" +.Fc ; +.Pp +.Ft void +.br +.Fo srandom +.Fa "unsigned long seed" +.Fc ; +.Pp +The type of each parameter is different in the legacy version. .Sh SEE ALSO .Xr arc4random 3 , .Xr rand 3 , .Xr srand 3 , -.Xr random 4 +.Xr random 4 , +.Xr compat 5 .Sh HISTORY These functions appeared in