mt_rand
(PHP 4, PHP 5, PHP 7, PHP 8)
mt_rand — Генерирует случайное значение через генератор случайных чисел на базе Вихря Мерсенна
Описание
В генераторах случайных чисел старых стандартных библиотек языка С (libc)
сомнительные или неизвестные характеристики и эти генераторы работают медленно.
Функция mt_rand() заменяет старую функцию
rand(). Она использует генератор случайных чисел
с известными характеристиками, который основан
» на Вихре Мерсенна
и генерирует случайные числа в среднем в четыре раза быстрее,
чем функция rand() стандартной библиотеки языка C.
При вызове без необязательных параметров 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
.
Примеры
Пример #1 Пример использования функции mt_rand()
<?php
echo mt_rand(), "\n";
echo mt_rand(), "\n";
echo mt_rand(5, 15), "\n";
?>
Вывод приведённого примера будет похож на:
Примечания
Внимание
Диапазон min
— max
не должен
выходить за границы значения, которое возвращает функция mt_getrandmax().
То есть (max
-
min
) <= mt_getrandmax().
Иначе функция mt_rand() может возвращать
менее качественные случайные числа.
Смотрите также
- mt_srand() - Инициализирует генератор случайных чисел на базе Вихря Мерсе́нна
- mt_getrandmax() - Показывает максимально возможное значение случайного числа
- random_int() - Получает криптографически безопасное равномерно выбранное целое число
- random_bytes() - Получает криптографически безопасные случайные байты