Генерирует случайное значение через генератор случайных чисел на базе Вихря Мерсе́нна

# mt_rand

(PHP 4, PHP 5, PHP 7, PHP 8)

mt_rand — Генерирует случайное значение через генератор случайных чисел на базе Вихря Мерсе́нна

### Описание

function mt_rand(): int
function mt_rand(int `$min`, int `$max`): int

Генераторы случайных чисел старых стандартных библиотек языка C создают результат на основе сомнительных или неизвестных характеристик и работают медленно. Функция mt_rand() заменяет старую функцию rand() и работает на базе генератора случайных чисел с известными характеристиками на основе алгоритма » Вихрь Мерсе́нна и генерирует случайные числа в среднем в четыре раза быстрее, чем функция rand() стандартной библиотеки языка C.

При вызове без необязательных параметров `min` и `max` функция mt_rand() возвращает псевдослучайное значение от 0 до значения, которое возвращает функция mt_getrandmax(). Вызов `mt_rand(5, 15)` вернёт случайное число между 5 и 15 включительно.

Предостережение

Функция не создаёт безопасные для криптографических целей значения, поэтому функцию нельзя использовать в криптографических целях или ожидать возврата значения, которое невозможно угадать.

Безопасные для криптографических целей случайные последовательности создаёт композиция класса Random\Randomizer с движком Random\Engine\Secure. В простых сценариях пользуются функциями random_int() и random_bytes() с удобным и безопасным API-интерфейсом, который поддерживается безопасным для криптографических целей CSPRNG-генератором псевдослучайных чисел операционной системы.

Предостережение

Функция создаёт случайные последовательности через глобальный экземпляр генератора псевдослучайных чисел на основе алгоритма Mt19937 «Вихрь Мерсе́на» поэтому разделяет состояние с остальными функциями, которые генерируют случайности через глобальный генератор. Вызов каждой такой функции продвигает последовательность, независимо от области вызова.

Функция выдаст предсказуемые одинаковые последовательности, если инициализировать генератор псевдослучайных чисел функцией mt_srand() или srand() одним и тем же значением.

В новом коде случайные последовательности лучше генерировать через объект Random\Randomizer.

### Список параметров

`min`

  Необязательный параметр: минимальное значение случайного числа. Значение по умолчанию равняется 0.

`max`

  Необязательный параметр: максимальное значение случайного числа. Значение по умолчанию равняется значению возврата функции mt_getrandmax().

### Возвращаемые значения

Функция возвращает случайное целое значение между значением параметра `min`, или 0, и значением параметра `max`, или значением, которое возвращает функция mt_getrandmax(), включительно.

### Ошибки

- Функция выбросит ошибку ValueError, если значение параметра `max` окажется меньше значения параметра `min`.

### Список изменений

Версия | Описание
--- | ---
8.0.0 | Функция выбросит ошибку ValueError, если значение параметра `max` окажется меньше значения параметра `min`; раньше функция выдавала ошибку уровня `E_WARNING` и возвращала значение `false`.
7.2.0 | В функции mt_rand() исправили ошибку смещения по модулю, поэтому последовательности, которые сгенерировали с конкретным начальным значением, не совпадают со значениями, которые сгенерировали в PHP 7.1 на 64-битных машинах.
7.1.0 | Функция rand() стала псевдонимом функции mt_rand().
7.1.0 | Функцию mt_rand() обновили и теперь функция генерирует значения через корректную версию генератора случайных чисел на основе Вихря Мерсенна. Старое поведение получают через функцию mt_srand() с аргументом `MT_RAND_PHP` для второго параметра.

### Примеры

Пример #1 Пример генерации случайного значения через генератор случайных чисел на базе Вихря Мерсе́нна функцией mt_rand()

    <?php

    echo mt_rand(), "\n";
    echo mt_rand(), "\n";

    echo mt_rand(5, 15), "\n";

Вывод приведённого примера будет похож на:

    1604716014
    1478613278
    6

### Примечания

Внимание

Ширине диапазона `min` — `max` нельзя выходить за границы значения, которое возвращает функция mt_getrandmax(). Требование выполняется, если: (`max` - `min`) <= mt_getrandmax(). При выходе за пределы диапазона возникает риск снижения качества случайных чисел, которые возвращает функция mt_rand().

### Смотрите также

- mt_srand() - Устанавливает начальное значение для инициализации генератора псевдослучайных чисел на базе Вихря Мерсе́нна
- mt_getrandmax() - Показывает максимально возможное значение случайного числа
- random_int() - Получает криптографически безопасное равномерно выбранное целое число
- random_bytes() - Генерирует криптографически безопасные случайные байты

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open