Difference between revisions of "cpp/numeric/random/srand"
m (+link to RAND_MAX) |
(mention that re-running rand requires the same seed (and not just a call to srand)) |
||
Line 8: | Line 8: | ||
If {{tt|rand()}} is used before any calls to {{tt|srand()}}, {{tt|rand()}} behaves as if it was seeded with {{tt|srand(1)}}. | If {{tt|rand()}} is used before any calls to {{tt|srand()}}, {{tt|rand()}} behaves as if it was seeded with {{tt|srand(1)}}. | ||
− | Each time {{tt|rand()}} is seeded with {{tt| | + | |
+ | Each time {{tt|rand()}} is seeded with the same {{tt|seed}}, it must produce the same sequence of values. | ||
{{tt|srand()}} is not guaranteed to be thread-safe. | {{tt|srand()}} is not guaranteed to be thread-safe. |
Revision as of 14:08, 15 December 2015
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.
Contents |
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
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) | |
C documentation for srand
|