Pseudo-random integers in C

Pseudo-random numbers are useful when you want to introduce an element to fund predictability. Normally, programs behave "deterministically," meaning the behavior of the program is entirety predictable based on its inputs.

rand() generates (pseudo) random integer between 0 and RAND_MAX which is a large positive integer.

The random number generated is not random at all. The pseudo random sequence of integer is based on a seed, which determines the sequence of number that will be generated.

srand( unsigned int ) sets the seed value. By default (no arguments), the seed 1 is used. Use srand(time(0)) to generate time dependent random integer (time.h) is required.

Generate pseudo-random integers in a specific range

The modulus (%) operator is useful for constrain the range of values generated by rand().

Examples (code range (inclusive)):

Generating pseudo-random floating point values

One way is to map a range of integer into real numbers.

Examples (code range (inclusive)):

Increasing the size of the range improves the "granularity" of the values generated. Finest granularity for generating values between 0 and 1 (inclusive): rand() / (double)(RAND_MAX -1)