mt_rand

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

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

Описание

mt_rand(): int
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-генератором псевдослучайных чисел операционной системы.

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

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

Примечания

Внимание

Диапазон minmax не должен выходить за границы значения, которое возвращает функция mt_getrandmax(). То есть (max - min) <= mt_getrandmax(). Иначе функция mt_rand() может возвращать менее качественные случайные числа.

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

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

Добавить

Примечания пользователей 2 notes

up
2
Pawe Krawczyk
11 years ago
To reiterate the message about *not* using mt_rand() for anything security related, here's a new tool that has been just posted that recovers the seed value given a single mt_rand() output:

http://www.openwall.com/php_mt_seed/README
To Top