The seed is the PID + LCG (https://github.com/php/php-src/search?q=GENERATE_SEED&unscoped_q=GENERATE_SEED)(PHP 4, PHP 5, PHP 7, PHP 8)
mt_rand â GĂ©nĂšre une valeur alĂ©atoire via le gĂ©nĂ©rateur de nombre alĂ©atoire Mersenne Twister
De nombreux générateurs de nombres aléatoires provenant de vieilles bibliothÚques libcs ont des comportements douteux et sont trÚs lents. mt_rand() est une fonction de remplacement pour rand(). Elle utilise un générateur de nombres aléatoire de caractéristique connue, le " » Mersenne Twister " qui est 4 fois plus rapide que la fonction standard libc.
Appelée sans les arguments optionnels min et
max, mt_rand() retourne un nombre
pseudoaléatoire, entre 0 et mt_getrandmax().
Pour obtenir un nombre entre 5 et 15 inclus, il faut utiliser
mt_rand(5,15).
Cette fonction ne gĂ©nĂšre pas de valeurs cryptographiquement sĂ»res, et ne doit pas ĂȘtre utilisĂ©e Ă des fins cryptographiques, ou Ă des fins qui exigent que les valeurs renvoyĂ©es soient indĂ©chiffrables.
Si de l'alĂ©atoire cryptographiquement sĂ»re est requis, le Random\Randomizer peut ĂȘtre utilisĂ© avec le moteur Random\Engine\Secure. Pour des cas d'usage simple, les fonctions random_int() et random_bytes() fournissent une API pratique et sĂ»re qui est qui est soutenu par le CSPRNG du systĂšme d'exploitation.
Cette fonction utilise l'instance globale Mt19937 ("Mersenne Twister") comme source d'aléatoire et partage ainsi son état avec toutes les autres fonctions utilisant le Mt19937 global. L'utilisation de l'une de ces fonctions fait avancer la séquence pour toutes les autres fonctions, indépendamment de la portée.
Générer des séquences reproductibles en initialisant mt_srand() ou srand() avec une valeur connue produira également une sortie reproductible de cette fonction.
Il est préférable d'utiliser les méthodes de Random\Randomizer dans tout nouveau code.
minValeur la plus basse qui peut ĂȘtre retournĂ©e (par dĂ©faut : 0)
maxValeur la plus haute qui peut ĂȘtre retournĂ©e (par dĂ©faut : mt_getrandmax()).
Un entier aléatoire compris entre min (ou 0)
et max (ou mt_getrandmax(), inclusif).
max est inférieur à min,
une exception ValueError est levée.
| Version | Description |
|---|---|
| 8.0.0 |
Une exception ValueError est levée si max est inférieur à min ;
auparavant, un E_WARNING était émis et la fonction retournait false.
|
| 7.2.0 | mt_rand() a reçu une correction de bogue pour un bug de polarisation modulo. Cela signifie que les séquences générées avec une valeur d'initialisation spécifique peuvent différer de PHP 7.1 sur les machines 64-bit. |
| 7.1.0 | rand() est devenu un alias de mt_rand(). |
| 7.1.0 |
mt_rand()
a été mis à jour
pour utiliser la version corrigée, correcte, de l'algorithme Mersenne
Twister. Pour revenir Ă l'ancien comportement, utiliser
mt_srand() avec MT_RAND_PHP
comme deuxiĂšme paramĂštre.
|
Exemple #1 Exemple avec mt_rand()
<?php
echo mt_rand(), "\n";
echo mt_rand(), "\n";
echo mt_rand(5, 15), "\n";
?>Résultat de l'exemple ci-dessus est similaire à :
1604716014 1478613278 6
La plage min max doit se situer
dans la plage mt_getrandmax(). C.-Ă -d.
(max - min) <=
mt_getrandmax() sinon, mt_rand() peut
retourner des nombres aléatoires plus pauvres qu'il ne le devrait.
The seed is the PID + LCG (https://github.com/php/php-src/search?q=GENERATE_SEED&unscoped_q=GENERATE_SEED)