Defined in header <cstdlib>  

int rand(); 
Returns a pseudorandom integral value between 0
and RAND_MAX
(0
and RAND_MAX
included).
std::srand()
seeds the pseudorandom number generator used by rand()
. If rand()
is used before any calls to std::srand()
, rand()
behaves as if it was seeded with std::srand(1)
.
Each time rand()
is seeded with std::srand()
, it must produce the same sequence of values on successive calls.
Other functions in the standard library may call rand
. It is implementationdefined which functions do so.
It is implementationdefined whether rand()
is threadsafe.
(none).
Pseudorandom integral value between 0
and RAND_MAX
.
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 wellknown example, the loworder bit simply alternated between 1
and 0
between calls).
rand()
is not recommended for serious randomnumber generation needs. It is recommended to use C++11's random number generation facilities to replace rand(). (since C++11).
#include <cstdlib> #include <iostream> #include <ctime> int main() { std::srand(std::time(nullptr)); // use current time as seed for random generator int random_variable = std::rand(); std::cout << "Random value on [0 " << RAND_MAX << "]: " << random_variable << '\n'; // roll 6sided dice 20 times for (int n=0; n != 20; ++n) { int x = 7; while(x > 6) x = 1 + std::rand()/((RAND_MAX + 1u)/6); // Note: 1+rand()%6 is biased std::cout << x << ' '; } }
Possible output:
Random value on [0 2147483647]: 726295113 6 3 6 2 6 5 6 3 1 1 1 6 6 6 4 1 3 6 4 2
(C++11)  produces integer values evenly distributed across a range (class template) 
seeds pseudorandom number generator (function) 

maximum possible value generated by std::rand (macro constant) 

generates a random integer in the specified range (function template) 

C documentation for rand 
© cppreference.com
Licensed under the Creative Commons AttributionShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/random/rand