(PHP 8 >= 8.2.0)
Random\Engine\Mt19937::__construct â Construit un nouveau moteur Mt19937
Ă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 (soit 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, les moteurs Random\Engine\Xoshiro256StarStar et Random\Engine\PcgOneseq128XslRr64 acceptent tous deux des graines beaucoup plus grandes qui ont peu de chances d'entrer en collision alĂ©atoirement. Si la reproductibilitĂ© n'est pas requise, le moteur Random\Engine\Secure fournit un alĂ©a cryptographiquement sĂ»r.
seed
Remplit l'état avec des valeurs générées avec un générateur congruentiel linéaire
qui a été initialisé avec seed interprété comme un entier
non signé sur 32 bits.
Si seed est omis ou null, un entier non signé aléatoire
sur 32 bits sera utilisé.
modeL'utilisation d'une des constantes suivantes pour spécifier l'implémentation de l'algorithme à utiliser.
MT_RAND_MT19937:
L'implémentation correcte de Mt19937.
MT_RAND_PHP:
Une implémentation incorrecte pour la rétrocompatibilité avec mt_srand() avant
PHP 7.1.0.
Cette fonctionnalitĂ© est OBSOLĂTE Ă partir de PHP 8.3.0. DĂ©pendre de cette fonctionnalitĂ© est fortement dĂ©conseillĂ©.
Exemple #1 Exemple de Random\Engine\Mt19937::__construct()
<?php
// Utilise une graine aléatoire de 32 bits.
$e = new \Random\Engine\Mt19937();
$r = new \Random\Randomizer($e);
?>