std::srand - cppreference.com (original) (raw)
| | | | | ---------------------------- | | | | void srand( unsigned seed ); | | |
Seeds the pseudo-random number generator used by std::rand() with the value seed
.
If std::rand() is used before any calls to srand()
, std::rand() behaves as if it was seeded with srand(1).
Each time std::rand() is seeded with the same seed
, it must produce the same sequence of values.
srand()
is not guaranteed to be thread-safe.
[edit] Parameters
[edit] Return value
(none)
[edit] Notes
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 std::time(0) as the seed. However, std::time returns a std::time_t value, and std::time_t is not guaranteed to be an integral type. In practice, though, every major implementation defines std::time_t to be an integral type, and this is also what POSIX requires.
[edit] Example
#include #include #include int main() { std::srand(std::time(0)); // use current time as seed for random generator std::cout << "Random value on [0, " << RAND_MAX << "]: " << std::rand() << '\n'; }
Possible output:
Random value on [0, 2147483647]: 1373858591