Defined in header <cstdlib> | ||
---|---|---|
void srand( unsigned seed ); |
Seeds the pseudo-random number generator used by std::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 the same seed
, it must produce the same sequence of values.
srand()
is not guaranteed to be thread-safe.
seed | - | the seed value |
(none).
Generally speaking, the pseudo-random number generator should only be seeded once, before any calls to rand()
, at 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.
#include <cstdlib> #include <iostream> #include <ctime> int main() { std::srand(std::time(0)); //use current time as seed for random generator int random_variable = std::rand(); std::cout << "Random value on [0 " << RAND_MAX << "]: " << random_variable << '\n'; }
Possible output:
Random value on [0 2147483647]: 1373858591
generates a pseudo-random number (function) |
|
maximum possible value generated by std::rand (macro constant) |
|
reseeds the per-thread random engine (function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/numeric/random/srand