mt_srand

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

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

Описание

mt_srand(?int$seed = null, int$mode = MT_RAND_MT19937): void

Запускает генератор случайных чисел значением параметра seed или случайным числом, если параметр seed не задан.

Замечание: Нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку это происходит автоматически.

Предостережение

Поскольку механизм Mt19937 ("Mersenne Twister") принимает в качестве значения только одно 32-битное целое число, количество возможных случайных последовательностей ограничено всего 232 (то есть 4 294 967 296), несмотря на огромный период Mt19937, равный 219937-1.

Если полагаться на неявное или явное случайное значение, дубликаты появятся гораздо раньше. Дублированные значения ожидаются с 50% вероятностью после менее чем 80 000 случайно сгенерированных значений в соответствии с проблемой дня рождения. Вероятность дублирования значений составляет 10% после случайной генерации примерно 30 000 значений.

Это делает Mt19937 непригодным для применения в тех случаях, когда дублирование последовательностей не должно происходить с более чем ничтожной вероятностью. Если требуется воспроизводимое значение, то движки Random\Engine\Xoshiro256StarStar и Random\Engine\PcgOneseq128XslRr64 поддерживают гораздо большие значения, которые вряд ли столкнутся случайно. Если воспроизводимость не требуется, механизм Random\Engine\Secure обеспечивает криптографически безопасную случайную последовательность.

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

seed

Заполняет состояние значениями, сгенерированными линейным конгруэнтным генератором, которые были инициализированы значением параметра seed, интерпретированным как 32-битное целое беззнаковое число.

Если параметр seed не был задан или равен null, будет использовано случайное беззнаковое 32-битное число.

mode

Одна из следующих констант задаёт алгоритм генерации.

  • MT_RAND_MT19937: Корректная реализация Mt19937, доступна с PHP 7.1.0.
  • MT_RAND_PHP Использует некорректную реализацию Mersenne Twister, которая использовалась по умолчанию до версии PHP 7.1.0. Этот режим доступен для обратной совместимости.
Внимание

Эта функциональность объявлена УСТАРЕВШЕЙ начиная с PHP 8.3.0 и её крайне не рекомендуется использовать.

Возвращаемые значения

Функция не возвращает значения после выполнения.

Список изменений

ВерсияОписание
8.3.0 Теперь параметр seed может принимать значение null.
7.1.0 Теперь функция srand()псевдоним функции mt_srand().
7.1.0 Функция mt_rand()была обновлена, чтобы использовать фиксированную, корректную версию алгоритма Вихря Мерсенна. Чтобы вернуться к старому поведению, функцию mt_srand() вызывают, передавая во второй параметр константу MT_RAND_PHP.

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

  • mt_rand() - Генерирует случайное значение методом с помощью генератора простых чисел на базе Вихря Мерсенна
  • mt_getrandmax() - Показывает максимально возможное значение случайного числа
  • srand() - Задаёт начальное число генератора псевдослучайных чисел
To Top