arc4random_buf (3) Linux Manual Page
arc4random arc4random_buf arc4random_uniform arc4random_stir arc4random_addrandom – arc4 random number generator
Library
Lb libbsdSynopsis
In bsd/stdlib.h Ft u_int32_t Fn arc4random void Ft void Fn arc4random_buf void *buf size_t nbytes Ft u_int32_t Fn arc4random_uniform u_int32_t upper_bound Ft void Fn arc4random_stir void Ft void Fn arc4random_addrandom unsigned char *dat int datlenDescription
The Fn 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 Fn arc4random function returns pseudo-random numbers in the range of 0 to (2**32)-1, and therefore has twice the range of rand(3) and random(3).Fn arc4random_buf function fills the region Fa buf of length Fa nbytes with ARC4-derived random data.
Fn arc4random_uniform will return a uniformly distributed random number less than Fa upper_bound . Fn 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 Fn arc4random_stir function reads data from /dev/urandom and uses it to permute the S-Boxes via Fn arc4random_addrandom .
There is no need to call Fn arc4random_stir before using Fn arc4random functions family, since they automatically initialize themselves.
Examples
The following produces a drop-in replacement for the traditional Fn rand and Fn random functions using Fn arc4random :
"#define foo4random() (arc4random() % ((unsigned)RAND_MAX + 1))"
