NAME
rand
, rand_r
,
srand
, srand_deterministic
— bad pseudo-random number
generator
SYNOPSIS
#include
<stdlib.h>
void
srand
(unsigned
int seed);
void
srand_deterministic
(unsigned
int seed);
int
rand
(void);
int
rand_r
(unsigned
int *seed);
DESCRIPTION
To satisfy portable code,
srand
() may
be called to initialize the subsystem. In OpenBSD
the seed variable is ignored, and strong random number
results will be provided from
arc4random(3). In other systems, the
seed variable primes a simplistic deterministic
algorithm.
If the standardized behavior is required
srand_deterministic
()
can be substituted for srand
(), then subsequent
rand
() calls will return results using the
deterministic algorithm. The deterministic sequence algorithm changed a
number of times since original development, is underspecified, and should
not be relied upon to remain consistent between platforms and over time.
The
rand
()
function returns a result in the range of 0 to
RAND_MAX
. By default, this result comes from
arc4random(3). If
srand_deterministic
() was called, the result will be
computed using the deterministic algorithm.
The
rand_r
()
function is a thread-safe version of rand
(). Storage
for the seed must be provided through the seed
argument, and needs to have been initialized by the caller. It always
operates using the deterministic algorithm.
SEE ALSO
STANDARDS
The rand
() function conforms to
ANSI X3.159-1989
(“ANSI C89”).
The rand_r
() function conforms to
IEEE Std 1003.1-2008 (“POSIX.1”).
The srand
() function does not conform to
ANSI X3.159-1989 (“ANSI C89”),
intentionally.
The srand_deterministic
() function is an
OpenBSD extension.
HISTORY
The functions rand
() and
srand
() first appeared in
Version 3 AT&T UNIX.