random(3M)random(3M)NAMErandom(), srandom(), initstate(), setstate() - generate a pseudorandom
The and functions are random-number generators that have virtually the
same calling sequence and initialization properties as the and func‐
tions, but produce sequences that are more random. The low 12 bits
generated by the function go through a cyclic pattern, while all the
bits generated by the function are usable. For example, produces a
random binary value.
The function uses a nonlinear additive feedback random-number generator
employing a default state array size of 31 long integers to return suc‐
cessive pseudorandom numbers in the range from 0 to The period of this
random-number generator is approximately 16 x The size of the state
array determines the period of the random-number generator. Increasing
the state array size increases the period.
With 256 bytes of state information, the period of the random-number
generator is greater than
Like the function, the function produces by default a sequence of num‐
bers that can be duplicated by calling the function with a value of 1
as the seed.
The function initializes the current state array using the value of
The and functions handle restarting and changing random-number genera‐
tors. The function allows a state array, pointed to by the state argu‐
ment, to be initialized for future use. The size argument, which spec‐
ifies the size in bytes of the state array, is used by the function to
decide how sophisticated a random-number generator to use; the larger
the state array, the more random the numbers. Values for the amount of
state information are 8, 32, 64, 128, and 256 bytes. Amounts less than
8 bytes return a NULL pointer, while other amounts are rounded down to
the nearest known value. The seed argument specifies a starting point
for the random-number sequence and provides for restarting at the same
point. The function returns a pointer to the previous state informa‐
Once a state has been initialized, the function allows switching
between state arrays. The array defined by the state argument is used
for further random-number generation until the function is called or
the function is called again. The function returns a pointer to the
previous state array.
After initialization, a state array can be restarted at a different
point in one of two ways:
The function can be used, with the desired seed, state array,
and size of the array.
The function, with the desired state, can be used, followed by
the function with the desired seed. The advantage of using both
of these functions is that the size of the state array does not
have to be saved once it is initialized.
The function returns the generated pseudorandom number.
The function returns no value.
Upon successful completion, the and functions return a pointer to the
previous state array. Otherwise, a NULL pointer is returned.
If the function detects that the state information has been damaged,
error messages are written to standard error.
SEE ALSOdrand48(3C), rand(3C), random(7).