Difference between revisions of "cpp/numeric/random/rand"
(thread safety is part of API - move from notes to a more visible location) |
SuperBoi45 (Talk | contribs) |
||
Line 34: | Line 34: | ||
int main() | int main() | ||
{ | { | ||
− | std::srand(std::time(0)); //use current time as seed for random generator | + | std::srand(std::time(0)); // use current time as seed for random generator |
int random_variable = std::rand(); | int random_variable = std::rand(); | ||
std::cout << "Random value on [0 " << RAND_MAX << "]: " | std::cout << "Random value on [0 " << RAND_MAX << "]: " |
Revision as of 11:44, 30 November 2012
Defined in header <cstdlib>
|
||
int rand(); |
||
Returns a pseudo-random integral value between 0 and RAND_MAX
(0 and RAND_MAX included).
srand()
seeds the pseudo-random number generator used by rand()
.
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.
rand()
is not guaranteed to be thread-safe.
Contents |
Parameters
(none)
Return value
Pseudo-random integral value between 0 and RAND_MAX
.
Notes
There are no guarantees as to the quality of the random sequence produced.
In the past, some implementations of rand()
have had serious shortcomings in the randomness, distribution and period of the sequence produced (in one well-known example, the low-order bit simply alternated between 1
and 0
between calls).
rand()
is not recommended for serious random-number generation needs, like cryptography.
Example
#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
See also
C documentation for rand
|