(PHP 4, PHP 5, PHP 7, PHP 8)
mt_srand — Устанавливает начальное значение для инициализации генератора псевдослучайных чисел на базе Вихря Мерсе́нна
Функция устанавливает значение параметра 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.
|