mt_srand

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

mt_srandInitialise le générateur de nombres aléatoires Mersenne Twister

Description

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

mt_srand() initialise le générateur de valeurs aléatoires avec seed ou avec une valeur aléatoire si aucun paramètre seed n'est fourni.

Note: Il n'est pas nécessaire d'initialiser le générateur de nombres aléatoires avec srand() ou mt_srand(), ceci est fait automatiquement.

Attention

Étant donné que le moteur Mt19937 ("Mersenne Twister") prend un seul entier de 32 bits en tant que graine, le nombre de séquences aléatoires possibles est limité à seulement 232 (par exemple 4 294 967 296), malgré la période énorme de Mt19937 de 219937-1.

Quand on se fie à une graine aléatoire implicite ou explicite, les duplications apparaîtront beaucoup plus tôt. Les graines dupliquées sont attendues avec une probabilité de 50% après moins de 80 000 graines générées aléatoirement selon le problème d anniversaire. Une probabilité de 10% d une graine dupliquée se produit après avoir généré environ 30 000 graines de manière aléatoire.

Cela rend Mt19937 inadapté aux applications où les séquences dupliquées ne doivent pas se produire avec plus qu une probabilité négligeable. Si une graine reproductible est requise, à la fois le moteur Random\Engine\Xoshiro256StarStar et Random\Engine\PcgOneseq128XslRr64 supportent des graines beaucoup plus grandes qui sont peu susceptibles de se heurter de manière aléatoire. Si la reproductibilité n'est pas requise, le moteur Random\Engine\Secure fournit des données aléatoires cryptographiquement sécurisées.

Liste de paramètres

seed

Remplit l'état avec des valeurs générées par un générateur congruentiel linéaire qui a été initialisé avec seed interprété comme un entier non signé de 32 bits.

Si seed est omis ou null, un entier non signé de 32 bits sera utilisé de manière aléatoire.

mode

Utilisez une des constantes suivantes pour spécifier l'implémentation de l'algorithme à utiliser.

  • MT_RAND_MT19937: La bonne implémentation Mt19937, disponible à partir de PHP 7.1.0.
  • MT_RAND_PHP Utilise une implémentation incorrecte de Mersenne Twister qui était la valeur par défaut avant PHP 7.1.0. Ce mode est disponible pour assurer la compatibilité ascendante.
Avertissement

Cette fonctionnalité est OBSOLÈTE à partir de PHP 8.3.0. Dépendre de cette fonctionnalité est fortement déconseillé.

Valeurs de retour

Aucune valeur n'est retournée.

Historique

VersionDescription
8.3.0seed est désormais nullable.
7.1.0srand()a été changé pour être un alias de mt_srand().
7.1.0mt_rand()a été mis à jour pour utiliser la version corrigé, correcte de l'algorithme de Mersenne Twister. Pour retourner à l'ancien comportement, utilisez mt_srand() avec MT_RAND_PHP comme deuxième paramètre.

Voir aussi

  • mt_rand() - Génère une valeur aléatoire via le générateur de nombre aléatoire Mersenne Twister
  • mt_getrandmax() - La plus grande valeur aléatoire possible
  • srand() - Initialise le générateur de nombres aléatoires
To Top