mt_getrandmax
mt_srand
Math Functions
PHP Manual

# mt_rand

(PHP 4, PHP 5)

mt_rand — Generate a better random value

### Description

int mt_rand ( void )
int mt_rand ( int `$min` , int `$max` )

Many random number generators of older libcs have dubious or unknown characteristics and are slow. By default, PHP uses the libc random number generator with the rand() function. The mt_rand() function is a drop-in replacement for this. It uses a random number generator with known characteristics using the » Mersenne Twister, which will produce random numbers four times faster than what the average libc rand() provides.

If called without the optional `min`, `max` arguments mt_rand() returns a pseudo-random value between 0 and mt_getrandmax(). If you want a random number between 5 and 15 (inclusive), for example, use mt_rand(5, 15).

Caution

This function does not generate cryptographically secure values, and should not be used for cryptographic purposes. If you need a cryptographically secure value, consider using random_int(), random_bytes(), or openssl_random_pseudo_bytes() instead.

### Parameters

`min`

  Optional lowest value to be returned (default: 0)

`max`

  Optional highest value to be returned (default: mt_getrandmax())

### Return Values

A random integer value between `min` (or 0) and `max` (or mt_getrandmax(), inclusive), or `FALSE` if `max` is less than `min`.

### Changelog

Version | Description
--- | ---
5.3.4 | Issues an `E_WARNING` and returns `FALSE` if `max` < `min`.

### Examples

Example #1 mt_rand() example

`<?php
echo mt_rand() . "\n";
echo mt_rand() . "\n";
echo mt_rand(5, 15);
?>`

The above example will output something similar to:

    1604716014
    1478613278
    6

### Notes

Caution

The distribution of mt_rand() return values is biased towards even numbers on 64-bit builds of PHP when `max` is beyond 2^32. This is because if `max` is greater than the value returned by mt_getrandmax(), the output of the random number generator must be scaled up.

### See Also

- mt_srand() - Seed the better random number generator
- mt_getrandmax() - Show largest possible random value
- random_int() - Generates cryptographically secure pseudo-random integers
- random_bytes() - Generates cryptographically secure pseudo-random bytes
- openssl_random_pseudo_bytes() - Generate a pseudo-random string of bytes
- rand() - Generate a random integer

mt_getrandmax
mt_srand
Math Functions
PHP Manual