The
arc4random() function provides a high quality 32-bit pseudo-random number very quickly.
arc4random() seeds itself on a regular basis from the kernel strong random number subsystem described in
rnd(4). On each call, an ARC4 generator is used to generate a new result. The
arc4random() function uses the ARC4 cipher key stream generator, which uses 8*8 8 bit S-Boxes. The S-Boxes can be in about (2**1700) states.
arc4random() fits into a middle ground not covered by other subsystems such as the strong, slow, and resource expensive random devices described in
rnd(4) versus the fast but poor quality interfaces described in
rand(3),
random(3), and
drand48(3).
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(), since
arc4random() automatically initializes itself.