# Random Number Generation

PHP provides the function `rand( )`

, which returns values from a generated sequence of *pseudo-random* numbers. Well-known algorithms generate sequences that appear to have random behavior but aren't truly random. The `srand( )`

function seeds the algorithm and needs to be called before the first use of the `rand( )`

function in a script. Otherwise, the function returns the same numbers each time a script is called. The prototypes of the functions are:

void srand(integer seed) integer rand( ) integer rand(integer min, integer max)

## srand function

The pseudo-random number generator is initialized using the argument passed as seed. For every different seed value used in a call to srand, the pseudo-random number generator can be expected to generate a different succession of results in the subsequent calls to rand.

Two different initializations with the same seed will generate the same succession of results in subsequent calls to rand.

If seed is set to 1, the generator is reinitialized to its initial value and produces the same values as before any call to rand or srand.

In order to generate random-like numbers, srand is usually initialized to some distinctive runtime value, like the value returned by function time. This is distinctive enough for most trivial randomization needs.

The `srand( )`

function is called by passing an integer `seed`

that is usually generated from the current time.

## rand function

When called with no arguments, `rand( )`

returns a random number between 0 and the value returned by `getrandmax( )`

. When `rand( )`

is called with two arguments-the *min* and *max* values-the returned number is a random number between *min* and *max*. Consider this example:

// Generate a seed. $seed = (float) microtime( ) * 100000000; // Seed the pseudo-random number generator srand($seed); // Generate some random numbers print rand(); // between 0 and getmaxrand( ) print rand(1, 6); // between 1 and 6 (inclusive)