mt_rand

Generate a better random value

&reftitle.description; `int` `mt_rand` `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)`.

&reftitle.parameters;

`min`

- Optional lowest value to be returned (default: 0)

`max`

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

&reftitle.returnvalues;

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

&reftitle.changelog;

&Version; | &Description;
5.3.4 | Issues an `E_WARNING` and returns &false; if `max` < `min`.
&changelog.randomseed;

&reftitle.examples;

### `mt_rand` example

    <?php
    echo mt_rand() . "\n";
    echo mt_rand() . "\n";

    echo mt_rand(5, 15);
    ?>

&example.outputs.similar;

    1604716014
    1478613278
    6

&reftitle.notes; &caution.cryptographically-insecure;

The distribution of `mt_rand` return values is biased towards even numbers on 64-bit builds of PHP when `max` is beyond `2^32`.

&reftitle.seealso;

- `mt_srand`
- `mt_getrandmax`
- `openssl_random_pseudo_bytes`
- `rand`