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() - Задає початкове число генератора псевдовипадкових чисел