(PHP 8 >= 8.2.0)
Random\Engine\Mt19937::__construct — Создаёт новый объект движка Mt19937
Поскольку механизм 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.
MT_RAND_PHP
:
Некорректная реализация для обратной совместимости
с функцией mt_srand() до версии PHP 7.1.0.
Функциональность УСТАРЕЛА с PHP 8.3.0. Пользоваться функциональностью настоятельно не рекомендуют.
Пример #1 Пример работы метода Random\Engine\Mt19937::__construct()
<?php
// Используется случайное 32-битное начальное число
$e = new \Random\Engine\Mt19937();
$r = new \Random\Randomizer($e);
?>