X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/1f2f436a38f7ae2d39a943ad2898d8fed4ed2e58..e07eda1a0324f771bb1ed20ef94f3229005ee46c:/stdlib/FreeBSD/random.3 diff --git a/stdlib/FreeBSD/random.3 b/stdlib/FreeBSD/random.3 index 4c3f061..84c8755 100644 --- a/stdlib/FreeBSD/random.3 +++ b/stdlib/FreeBSD/random.3 @@ -32,32 +32,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. @@ -78,7 +91,7 @@ The difference is that .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, @@ -87,18 +100,21 @@ will produce a random binary value. .Pp Like +.Xr srand 3 , +.Fn srandom +sets the initial seed value for future calls to +.Fn random . +Like .Xr rand 3 , .Fn random will by default produce a sequence of numbers that can be duplicated by calling .Fn srandom -with -.Ql 1 -as the seed. +with the same seed. .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. @@ -123,7 +139,7 @@ more state, the better the random numbers will be. 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 @@ -162,7 +178,7 @@ it is initialized. 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 DIAGNOSTICS If @@ -171,11 +187,36 @@ is called with less than 8 bytes of state information, or if .Fn setstate detects that the state information has been garbled, error messages are printed on the standard error output. +.Sh LEGACY SYNOPSIS +.Fd #include +.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