mt_rand

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

mt_randГенерирует случайное значение методом с помощью генератора простых чисел на базе Вихря Мерсенна

Описание

mt_rand(): int
mt_rand(int $min, int $max): int

Многие генераторы случайных чисел в старых библиотеках имеют сомнительные или неизвестные характеристики, а также работают довольно медленно. Функция 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(515);
?>

Результатом выполнения данного примера будет что-то подобное:

1604716014
1478613278
6

Примечания

Внимание

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

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

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

add a note

User Contributed Notes 2 notes

up
6
Pawe Krawczyk
9 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