Seeds the Mersenne Twister Random Number Generator

- « mt_rand

- rand »

- PHP Manual
- Random Functions
- Seeds the Mersenne Twister Random Number Generator

# mt_srand

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

mt_srand — Seeds the Mersenne Twister Random Number Generator

### Description

mt_srand(int `$seed` = 0, int `$mode` = `MT_RAND_MT19937`): void

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

> Note: There is no need to seed the random number generator with srand() or mt_srand() as this is done automatically.

Caution

Because the Mt19937 (“Mersenne Twister”) engine accepts only a single 32 bit integer as the seed, the number of possible random sequences is limited to just 232 (i.e. 4,294,967,296), despite Mt19937’s huge period of 219937-1.

When relying on either implicit or explicit random seeding, duplications will appear much earlier. Duplicated seeds are expected with 50% probability after less than 80,000 randomly generated seeds according to the birthday problem. A 10% probability of a duplicated seed happens after randomly generating roughly 30,000 seeds.

This makes Mt19937 unsuitable for applications where duplicated sequences must not happen with more than a negligible probability. If reproducible seeding is required, both the Random\Engine\Xoshiro256StarStar and Random\Engine\PcgOneseq128XslRr64 engines support much larger seeds that are unlikely to collide randomly. If reproducibility is not required, the Random\Engine\Secure engine provides cryptographically secure randomness.

### Parameters

`seed`

  An arbitrary int seed value.

`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.
  Warning

  This feature has been DEPRECATED as of PHP 8.3.0. Relying on this feature is highly discouraged.

### Return Values

No value is returned.

### Changelog

Version | Description
--- | ---
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.

### See Also

- 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