PHP 8.6.0 Beta 1 is available for testing

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

Примечания

Внимание

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

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

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

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

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

+Добавить

AltStyle によって変換されたページ (->オリジナル) /