mt_srand

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

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

Описание

mt_srand(int $seed = 0, 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

Необязательное целочисленное (int) значение параметра переинициализации

mode

Используйте одну из следующих констант для изменения реализации генератора.

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

Внимание

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

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

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

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

Версия Описание
7.1.0 srand() теперь является псевдонимом для mt_srand().
7.1.0 mt_rand() была изменена для использования фиксированной, корректной версии алгоритма Вихря Мерсенна. Для отката к старому поведению, используйте mt_srand() со вторым параметром MT_RAND_PHP.

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

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