- The standard C library -- cstdlib -- contains
functions for generating pseudo-random numbers.
- Numbers aren't truly random, because they are simply generated with
an algorithm
- A pseudo-random number generation algorithm starts with a value
called a seed value. (If you use the same seed, you get the
same pattern of "random" numbers!)
- In C++ (and C), the functions needed from cstdlib are
rand() and srand()
- srand() is used to seed the random number generator
(and only needs to be called once, best to do this at the start of main()).
- The seed value could be obtained from user input, but usually
the best way is to use the time value obtained from the computer's
clock, since that will change frequently (like between runs of the
program)
- To get the clock value, call the function time(0) from the
library ctime
Example:
#include <cstdlib> // for srand(), rand()
#include <ctime> // for time()
// ...
srand( time(0) ); // seed the random number generator
//if the above line gives you a warning when you compile, try:
//srand((unsigned int)time(0));
- Once the random number generator has been seeded, use the
rand() function to retrieve a random number. The
function takes no parameters, and returns the random number selected:
int r;
r = rand(); // r now contains a random number
// in the range of possible integers
- Since the random number returned could be from a very large range,
sometimes we want to force the number into a smaller range. This can be
done with the modulus operator %. Divide by the size of the range
and take the remainder:
r = rand() % 10; // r will be a random number from 0 through 9
- If we want to have the range of random numbers start somewhere other
than 0, just add an offset (or subtract) to shift the starting point of
the range:
r = rand() % 10 + 1; // a random number from 1 - 10
r = rand() % 10 + 5; // a random number from 5 - 14
- This example shows some
random number generation