mt_srand

(PHP 4, PHP 5, PHP 7, PHP 8)

mt_srand — Ініціалізує генератор випадкових чисел на базі Вихря Мерсена

Опис

mt_srand(?int $seed = null, int $mode = MT_RAND_MT19937): void

Запускає генератор випадкових чисел значення параметра seed або випадковим числом, якщо параметр seedне задан.

Зауваження: Немає необхідності ініціалізувати генератор випадкових чисел функціями srand()или**mt_srand()**оскільки це відбувається автоматично.

Застереження

Оскільки механізм 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, доступна з 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

Дивіться також

  • mt_rand() - Генерує випадкове значення методом за допомогою генератора простих чисел на базі Вихря Мерсенна
  • mt_getrandmax() - Показує максимально можливе значення випадкового числа
  • srand() - Задає початкове число генератора псевдовипадкових чисел