RAND(3C) Standard C Library Functions RAND(3C)
NAME
rand, srand, rand_r - simple random-number generator
SYNOPSIS
#include <stdlib.h>
int rand(
void);
void srand(
unsigned int seed);
int rand_r(
unsigned int *seed);
DESCRIPTION
The
rand() function uses a multiplicative congruential random-number
generator with period 2^32 that returns successive pseudo-random
numbers in the range of 0 to
RAND_MAX (defined in <
stdlib.h>).
The
srand() function uses the argument
seed as a seed for a new
sequence of pseudo-random numbers to be returned by subsequent calls
to
rand(). If
srand() is then called with the same
seed value, the
sequence of pseudo-random numbers will be repeated. If
rand() is
called before any calls to
srand() have been made, the same sequence
will be generated as when
srand() is first called with a
seed value
of 1.
The
rand_r() function has the same functionality as
rand() except
that a pointer to a seed
seed must be supplied by the caller. If
rand_r() is called with the same initial value for the object pointed
to by seed and that object is not modified between successive calls
to
rand_r(), the same sequence as that produced by calls to
rand() will be generated.
The
rand() and
srand() functions provide per-process pseudo-random
streams shared by all threads. The same effect can be achieved if all
threads call
rand_r() with a pointer to the same seed object. The
rand_r() function allows a thread to generate a private pseudo-random
stream by having the seed object be private to the thread.
USAGE
The spectral properties of
rand() are limited. The
arc4random(3C) function provides a better, more elaborate random-number generator.
When compiling multithreaded applications, the
_REENTRANT flag must
be defined on the compile line. This flag should be used only in
multithreaded applications.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
|MT-Level | Safe |
+--------------------+-----------------+
SEE ALSO
arc4random(3C),
attributes(7),
standards(7) February 11, 2015 RAND(3C)