2.5. Generating Random Numbers Within a Range
Problem
You want to generate a random number within a range of numbers.
Solution
Use mt_rand( )
:
// random number between $upper and $lower, inclusive $random_number = mt_rand($lower, $upper);
Discussion
Generating random numbers is useful when you want to display a random image on a page, randomize the starting position of a game, select a random record from a database, or generate a unique session identifier.
To generate a random number between two end points, pass
mt_rand( )
two arguments:
$random_number = mt_rand(1, 100);
Calling mt_rand( )
without any arguments returns a
number between 0
and the maximum random number,
which is returned by mt_getrandmax( )
.
Generating truly random numbers is hard for computers to do. Computers excel at following instructions methodically; they’re not so good at spontaneity. If you want to instruct a computer to return random numbers, you need to give it a specific set of repeatable commands; the very fact that they’re repeatable undermines the desired randomness.
PHP has two different random number
generators, a classic function called rand( )
and a
better function called mt_rand( )
. MT stands for
Mersenne Twister, which is named for the French monk and
mathematician Marin Mersenne and the type of prime numbers
he’s associated with. The algorithm is based on
these prime numbers. Since mt_rand( )
is more
random and faster than rand( )
, we prefer it to
rand( )
.
If you’re running a version of PHP earlier ...
Get PHP Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.