|
|
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
The rand() function shall compute a sequence of pseudo-random integers in the range [0, {RAND_MAX}] with a period of at least 2**32. The rand() function need not be reentrant. A function that is not required to be reentrant is not required to 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 IEEE Std 1003.1-2001 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] = '