(PHP 4, PHP 5, PHP 7, PHP 8)
mt_srand — Проинициализирует генератор случайных чисел на базе Вихря Мерсенна
$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.
Этот режим доступен для обратной совместимости.
Функция не возвращает значения после выполнения.
Версия | Описание |
---|---|
7.1.0 | srand() теперь является псевдонимом для mt_srand(). |
7.1.0 |
mt_rand() была изменена для использования фиксированной, корректной версии
алгоритма Вихря Мерсенна. Для отката к старому поведению, используйте
mt_srand() со вторым параметром
MT_RAND_PHP .
|