(PHP 8 >= 8.2.0)
Random\Engine\Mt19937::__construct — Создаёт новый объект движка Mt19937
Количество возможных случайных последовательностей ограничено только 4 294 967 296 значениями, поскольку механизм Mt19937 «Вихрь Мерсе́на» принимает в качестве значения инициализации только одно 32-битное целое число, или 232, хотя переод 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);
?>