Random\Engine\Mt19937::__construct

(PHP 8 >= 8.2.0)

Random\Engine\Mt19937::__construct — Construit un nouveau moteur Mt19937

Description

public function Random\Engine\Mt19937::__construct(?int $seed = null, int $mode = MT_RAND_MT19937)

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 (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.

Liste de paramĂštres

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é.

mode

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

Avertissement

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

Exemples

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);
?>
add a note

User Contributed Notes

There are no user contributed notes for this page.