std::srand

From cppreference.com
< cpp‎ | numeric‎ | random
Defined in header <cstdlib>
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.

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()

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

Example

#include <cstdlib>
#include <ctime>
#include <iostream>
 
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

See also

generates a pseudo-random number
(function)
maximum possible value generated by std::rand
(macro constant)
reseeds the per-thread random engine
(function)
C documentation for srand