PHP 8.5.0 Beta 3 available for testing

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(), включительно.

Ошибки

  • Функция выбросит ошибку 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

Примечания

Внимание

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

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

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

Добавить

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

To Top