|
|
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] = '