Random\Engine\Mt19937::__construct
(PHP 8 >= 8.2.0)
Random\Engine\Mt19937::__construct — Створює новий об'єкт двигуна Mt19937
Опис
public Random\Engine\Mt19937::__construct(?int$seed
null
, int$mode
MT_RAND_MT19937
) .
Застереження
Оскільки механізм Mt19937 ("Mersenne Twister") приймає як значення лише одне 32-бітове ціле число, кількість можливих випадкових послідовностей обмежена всього 232 (тобто 4294967296), незважаючи на величезний період Mt19937, рівний 219937-1.
Якщо покладатися на неявне або явне випадкове значення, дублікати з'являться набагато раніше. Дубльовані значення очікуються з 50% ймовірністю після менш ніж 80 000 випадково згенерованих значень відповідно до проблеми дня народження. Імовірність дублювання значень становить 10% після випадкової генерації приблизно 30000 значень.
Це робить 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()****
Loading...