mt_srand

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

mt_srandSeeds the Mersenne Twister Random Number Generator

Опис

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

Seeds the random number generator with seed or with a random value if no seed is given.

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

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

Оскільки рушій 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

Fills the state with values generated with a linear congruential generator that was seeded with seed interpreted as an unsigned 32 bit integer.

If seed is omitted or null, a random unsigned 32-bit integer will be used.

mode

Use one of the following constants to specify the implementation of the algorithm to use.

  • MT_RAND_MT19937: The correct Mt19937 implementation, available as of PHP 7.1.0.
  • MT_RAND_PHP Uses an incorrect Mersenne Twister implementation which was used as the default up till PHP 7.1.0. This mode is available for backward compatibility.

Увага

Цей функціонал ЗАСТАРІВ, починаючи з PHP 8.3.0. Вкрай не рекомендується на нього покладатися.

Значення, що повертаються

Не повертає значень.

Журнал змін

Версія Опис
8.3.0 seed is now nullable.
7.1.0 srand() has been made an alias of mt_srand().
7.1.0 mt_rand() has been updated to use the fixed, correct, version of the Mersenne Twister algorithm. To fall back to the old behaviour, use mt_srand() with MT_RAND_PHP as the second parameter.

Прогляньте також

  • mt_rand() - Generate a random value via the Mersenne Twister Random Number Generator
  • mt_getrandmax() - Show largest possible random value
  • srand() - Seed the random number generator