std:: rand
Common mathematical functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mathematical special functions (C++17) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mathematical constants (C++20) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Basic linear algebra algorithms (C++26) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Data-parallel types (
simd
)
(C++26)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Floating-point environment (C++11) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Complex numbers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Numeric array (
valarray
)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pseudo-random number generation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Factor operations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Interpolations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Saturation arithmetic | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Generic numeric operations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bit operations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
Defined in header
<cstdlib>
|
||
int
rand
(
)
;
|
||
Returns a pseudo-random integral value from the range
[
0
,
RAND_MAX
]
.
std::srand()
seeds the pseudo-random 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 implementation-defined which functions do so.
It is implementation-defined whether
rand()
is thread-safe.
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.
It is recommended to use C++11's
random number generation
facilities to replace
rand()
.
(since C++11)
Example
#include <cstdlib> #include <ctime> #include <iostream> int main() { std::srand(std::time(nullptr)); // use current time as seed for random generator int random_value = std::rand(); std::cout << "Random value on [0, " << RAND_MAX << "]: " << random_value << '\n'; for (const int times = 8; const int sides : {2, 4, 6, 8}) { std::cout << "Roll " << sides << "-sided dice " << times << " times: "; for (int n = 0; n != times; ++n) { int x = sides + 1; while (x > sides) x = 1 + std::rand() / ((RAND_MAX + 1u) / sides); // Note: 1 + rand() % sides is biased std::cout << x << ' '; } std::cout << '\n'; } }
Possible output:
Random value on [0, 2147483647]: 948298199 Roll 2-sided dice 8 times: 2 2 1 2 1 1 2 2 Roll 4-sided dice 8 times: 1 3 4 2 1 3 3 1 Roll 6-sided dice 8 times: 3 2 1 6 6 4 4 2 Roll 8-sided dice 8 times: 4 5 6 6 3 6 1 2
See also
(C++11)
|
produces integer values evenly distributed across a range
(class template) |
seeds pseudo-random 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
|