W3docs

getrandmax()

La fonction getrandmax() en PHP retourne la valeur entière maximale que peut produire rand(), utile pour mettre à l'échelle des valeurs aléatoires.

La fonction PHP getrandmax() retourne le plus grand entier que la fonction rand() peut produire lorsqu'elle est appelée sans arguments. Connaître cette borne supérieure permet de mettre à l'échelle des valeurs aléatoires dans votre propre plage, ce qui explique pourquoi getrandmax() est plus utile aux côtés de rand() que de manière isolée.

Syntaxe

getrandmax(): int

getrandmax() ne prend aucun paramètre et retourne un int. Sur PHP moderne (7.1 et ultérieur), elle retourne systématiquement 2147483647 (la valeur maximale d'un entier signé sur 32 bits, 2^31 - 1), quel que soit le système d'exploitation ou l'architecture. Avant PHP 7.1, la valeur pouvait différer selon les plates-formes, ce qui est l'une des raisons pour lesquelles la famille mt_rand(), plus portable, est désormais préférée.

Comment utiliser getrandmax()

Comme elle ne prend aucun argument, l'appel de la fonction est simple :

php— editable, runs on the server

Ce code affiche 2147483647 sur une installation PHP moderne.

Mettre à l'échelle rand() dans une plage personnalisée

L'utilisation principale de getrandmax() consiste à convertir la valeur de rand() en fraction ou en une plage plus petite. Diviser rand() par getrandmax() produit un flottant compris entre 0 et 1, que vous pouvez ensuite multiplier pour l'adapter à la plage dont vous avez besoin :

<?php
// A random float between 0 and 1
$fraction = rand() / getrandmax();

// Scale that fraction into the range 0–100
$scaled = $fraction * 100;

echo "Fraction: " . ($fraction >= 0 && $fraction <= 1 ? "in [0, 1]" : "out of range") . "\n";
echo "Scaled value is between 0 and 100: " . ($scaled >= 0 && $scaled <= 100 ? "yes" : "no") . "\n";
?>

Ici, la sortie confirme que la fraction reste dans [0, 1] et la valeur mise à l'échelle dans [0, 100]. Comme les valeurs exactes sont aléatoires, vérifier la plage (plutôt qu'une valeur fixe) est la méthode fiable pour valider la logique.

getrandmax() vs. mt_getrandmax()

Dans PHP 7.0+, rand() et mt_rand() partagent le même générateur de nombres aléatoires sous-jacent, donc getrandmax() et mt_getrandmax() retournent la même valeur. Pour le nouveau code, préférez :

  • mt_rand() pour des nombres pseudo-aléatoires plus rapides et de meilleure qualité.
  • random_int() lorsque vous avez besoin de valeurs cryptographiquement sécurisées (mots de passe, jetons, codes de sécurité).

Utilisez rand() et getrandmax() principalement lors du travail avec du code hérité qui les emploie déjà.

Conclusion

La fonction getrandmax() indique la limite supérieure de rand(), soit 2147483647 sur PHP moderne. Sa vraie utilité est d'être le dénominateur lors de la mise à l'échelle d'entiers aléatoires en flottants ou en plages personnalisées. Pour les nouveaux projets, préférez la famille mt_rand() ou random_int() pour les valeurs aléatoires sensibles à la sécurité.

Pratique

Pratique
Quel est le rôle de la fonction getrandmax() en PHP ?
Quel est le rôle de la fonction getrandmax() en PHP ?
Was this page helpful?