Defined in header <stdlib.h> | ||
---|---|---|
void srand( unsigned seed ); |
Seeds the pseudo-random number generator used by rand()
with the value seed
.
If rand()
is used before any calls to srand()
, rand()
behaves as if it was seeded with srand(1)
. Each time rand()
is seeded with srand()
, it must produce the same sequence of values.
srand()
is not guaranteed to be thread-safe.
Parameters
seed | - | the seed value |
Return value
(none).
Notes
Generally speaking, the pseudo-random number generator should only be seeded once, before any calls to rand()
, and the start of the program. It should not be repeatedly seeded, or reseeded every time you wish to generate a new batch of pseudo-random numbers.
Standard practice is to use the result of a call to time(0)
as the seed. However, time()
returns a time_t
value, and time_t
is not guaranteed to be an integral type. In practice, though, every major implementation defines time_t
to be an integral type, and this is also what POSIX requires.
Example
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { srand(time(0)); //use current time as seed for random generator int random_variable = rand(); printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable); }
Possible output:
Random value on [0 2147483647]: 1373858591
References
- C11 standard (ISO/IEC 9899:2011):
- 7.22.2.2 The srand function (p: 346-347)
- C99 standard (ISO/IEC 9899:1999):
- 7.20.2.2 The srand function (p: 312-313)
- C89/C90 standard (ISO/IEC 9899:1990):
- 4.10.2.2 The srand function
See also
generates a pseudo-random number (function) | |
maximum possible value generated by rand() (macro constant) | |
C++ documentation for srand |
Please login to continue.