RAND(3P) POSIX Programmer's Manual RAND(3P)
PROLOG
This manual page is part of the POSIX Programmer's Manual. The Linux implementation of this interface may differ (consult the correspond-
ing Linux manual page for details of Linux behavior), or the interface may not be implemented on Linux.
NAME
rand, rand_r, srand -- pseudo-random number generator
SYNOPSIS
#include <stdlib.h>
int rand(void);
int rand_r(unsigned *seed);
void srand(unsigned seed);
DESCRIPTION
For rand() and srand(): The functionality described on this reference page is aligned with the ISO C standard. Any conflict between the
requirements described here and the ISO C standard is unintentional. This volume of POSIX.1-2008 defers to the ISO C standard.
The rand() function shall compute a sequence of pseudo-random integers in the range [0,{RAND_MAX}] with a period of at least 232.
The rand() function need not be thread-safe.
The rand_r() function shall compute a sequence of pseudo-random integers in the range [0,{RAND_MAX}]. (The value of the {RAND_MAX} macro
shall be at least 32767.)
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
returns and calls to rand_r(), the same sequence shall be generated.
The srand() function uses the argument 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 shall be repeated. If rand() is called before any
calls to srand() are made, the same sequence shall be generated as when srand() is first called with a seed value of 1.
The implementation shall behave as if no function defined in this volume of POSIX.1-2008 calls rand() or srand().
RETURN VALUE
The rand() function shall return the next pseudo-random number in the sequence.
The rand_r() function shall return a pseudo-random integer.
The srand() function shall not return a value.
ERRORS
No errors are defined.
The following sections are informative.
EXAMPLES
Generating a Pseudo-Random Number Sequence
The following example demonstrates how to generate a sequence of pseudo-random numbers.
#include <stdio.h>
#include <stdlib.h>
...
long count, i;
char *keystr;
int elementlen, len;
char c;
...
/* Initial random number generator. */
srand(1);
/* Create keys using only lowercase characters */
len = 0;
for (i=0; i<count; i++) {
while (len < elementlen) {
c = (char) (rand() % 128);
if (islower(c))
keystr[len++] = c;
}
keystr[len] = '