Main index | Section 3 | Options |

Standard C Library (libc, -lc)

#include <stdlib.h>

The
`arc4random()`
function uses the key stream generator employed by the
arc4 cipher, which uses 8*8 8 bit S-Boxes.
The S-Boxes
can be in about
2^{1700}
states.
The
`arc4random()`
function returns pseudo-random numbers in the range of 0 to
2^{31}-1,
and therefore has twice the range of
rand(3)
and
random(3).

`arc4random_buf()`
function fills the region
buf
of length
nbytes
with ARC4-derived random data.

`arc4random_uniform()`
will return a uniformly distributed random number less than
upper_bound.
`arc4random_uniform()`
is recommended over constructions like
"`arc4random() % upper_bound`"
as it avoids "modulo bias" when the upper bound is not a power of two.

The
`arc4random_stir()`
function reads data from
` /dev/urandom`
and uses it to permute the S-Boxes via
`arc4random_addrandom()`.

There is no need to call
`arc4random_stir()`
before using
`arc4random()`
functions family, since
they automatically initialize themselves.

The following produces a drop-in replacement for the traditional
`rand()`
and
`random()`
functions using
`arc4random()`:

` #define foo4random() (arc4random() % ((unsigned)RAND_MAX + 1))`

ARC4RANDOM (3) | April 15, 1997 |

Main index | Section 3 | Options |

Please direct any comments about this manual page service to Ben Bullock. Privacy policy.

“ | On two occasions I have been asked [by members of Parliament], 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question. | ” |

— Charles Babbage |