mt_rand

(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

Description

function mt_rand(): int
function mt_rand(int $min, int $max): int

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

Attention

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.

Attention

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.

Liste de paramĂštres

min

Valeur la plus basse qui peut ĂȘtre retournĂ©e (par dĂ©faut : 0)

max

Valeur la plus haute qui peut ĂȘtre retournĂ©e (par dĂ©faut : mt_getrandmax()).

Valeurs de retour

Un entier aléatoire compris entre min (ou 0) et max (ou mt_getrandmax(), inclusif).

Erreurs / Exceptions

  • Si max est infĂ©rieur Ă  min, une exception ValueError est levĂ©e.

Historique

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.

Exemples

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

Notes

Avertissement

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.

Voir aussi

  • mt_srand() - Initialise le gĂ©nĂ©rateur de nombres alĂ©atoires Mersenne Twister
  • mt_getrandmax() - La plus grande valeur alĂ©atoire possible
  • random_int() - RĂ©cupĂšre un entier sĂ©lectionnĂ© de maniĂšre uniforme et cryptographiquement sĂ©curisĂ©e
  • random_bytes() - RĂ©cupĂšre des octets alĂ©atoires cryptographiquement sĂ©curisĂ©s
add a note

User Contributed Notes 1 note