11.6. Generating Random Numbers
Problem
You want to generate some
random floating-point numbers in the interval of [0.0, 1.0) with a uniform
distribution.
Solution
The C++ standard provides the C runtime function rand in the <cstdlib> header that
returns a random number in the range of 0 to RAND_MAX inclusive. The RAND_MAX macro represents the highest value returnable by the rand
function. A demonstration of using rand to
generate random floating-point numbers is shown in Example 11-11.
Example 11-11. Generating random numbers using rand
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
double doubleRand() {
return double(rand()) / (double(RAND_MAX) + 1.0);
}
int main() {
srand(static_cast<unsigned int>(clock()));
cout << "expect 5 numbers within the interval [0.0, 1.0)" << endl;
for (int i=0; i < 5; i++) {
cout << doubleRand() << "\n";
}
cout << endl;
}The program in Example 11-11 should produce output similar to:
expect 5 numbers within the interval [0.0, 1.0) 0.010437 0.740997 0.34906 0.369293 0.544373
Discussion
To be precise, random number generation functions, including rand, return pseudo-random numbers as opposed to truly random numbers, so
whenever I say random, I actually mean pseudo-random.
Before using the rand function you need to seed
(i.e., initialize) the random number generator with a call to srand. This assures that subsequent calls to rand won’t produce the same sequence of numbers each time the program is run. The simplest way to seed the ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access