(PHP 4, PHP 5, PHP 7, PHP 8)
mt_rand — Генерирует случайное значение методом с помощью генератора простых чисел на базе Вихря Мерсенна
Многие генераторы случайных чисел в старых библиотеках имеют сомнительные или неизвестные характеристики, а также работают довольно медленно. Функция mt_rand() представляет собой замену старой функции rand(). Она использует генератор случайных чисел с известными характеристиками, основанный на » Вихре Мерсенна, который генерирует случайные числа в среднем в четыре раза быстрее, чем libc rand().
Вызванная без необязательных параметров min
и max
, функция mt_rand() возвращает псевдослучайное значение между 0 и mt_getrandmax(). Если вам нужно, например, случайное число между 5 и 15 (включительно), используйте вызов mt_rand(5,15)
Функция не создаёт криптографически безопасные значения и не должна использоваться в криптографических целях или целях, которые требуют, чтобы возвращаемые значения были недоступны для разгадывания.
Если нужна криптографически безопасная случайная последовательность, можно использовать класс Random\Randomizer с движком Random\Engine\Secure. Для простых сценариев существуют функции random_int() и random_bytes() с удобным API криптографически безопасного генератора псевдослучайных чисел (CSPRNG), поддерживаемого операционной системой.
min
Необязательный параметр: минимальное значение случайного числа (по умолчанию: 0)
max
Необязательный параметр: максимальное значение случайного числа (по умолчанию: mt_getrandmax())
Случайное целое значение между min
(или 0) и max
(или mt_getrandmax(), включительно), или false
в случае, если max
меньше min
.
Версия | Описание |
---|---|
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() может возвращать менее качественные случайные числа.