getrandmax()
Die getrandmax()-Funktion in PHP gibt den größten ganzzahligen Wert zurück, den rand() erzeugen kann, und hilft beim Skalieren von Zufallswerten.
Die PHP-Funktion getrandmax() gibt die größte ganze Zahl zurück, die die Funktion rand() ohne Argumente erzeugen kann. Wenn Sie diese Obergrenze kennen, können Sie Zufallswerte sicher in Ihren eigenen Bereich skalieren. Deshalb ist getrandmax() am nützlichsten in Kombination mit rand() und weniger sinnvoll allein.
Syntax
getrandmax(): intgetrandmax() nimmt keine Parameter entgegen und gibt einen int zurück. Auf modernem PHP (7.1 und später) liefert die Funktion stets 2147483647 (den Maximalwert eines vorzeichenbehafteten 32-Bit-Integers, 2^31 - 1), unabhängig vom Betriebssystem oder der Architektur. Vor PHP 7.1 konnte der Wert je nach Plattform unterschiedlich sein, weshalb die portablere Familie mt_rand() heute bevorzugt wird.
Verwendung von getrandmax()
Da die Funktion keine Argumente erwartet, ist der Aufruf unkompliziert:
Auf einer modernen PHP-Installation gibt dies 2147483647 aus.
rand() in einen benutzerdefinierten Bereich skalieren
Der hauptsächliche praktische Nutzen von getrandmax() besteht darin, die Ausgabe von rand() in einen Bruch oder einen kleineren Bereich umzurechnen. Die Division von rand() durch getrandmax() ergibt einen float-Wert zwischen 0 und 1, den Sie anschließend multiplizieren können, um ihn an jeden gewünschten Bereich anzupassen:
<?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";
?>Die Ausgabe bestätigt, dass der Bruch innerhalb von [0, 1] und der skalierte Wert innerhalb von [0, 100] bleibt. Da die genauen Zahlen zufällig sind, ist die Überprüfung des Bereichs (anstatt eines festen Werts) die zuverlässige Methode zur Verifikation der Logik.
getrandmax() vs. mt_getrandmax()
In PHP 7.0+ teilen sich rand() und mt_rand() denselben zugrunde liegenden Zufallszahlengenerator, weshalb getrandmax() und mt_getrandmax() denselben Wert zurückgeben. Für neuen Code empfiehlt sich:
mt_rand()für schnellere und qualitativ bessere Pseudozufallszahlen.random_int(), wenn kryptografisch sichere Werte benötigt werden (Passwörter, Tokens, Sicherheitscodes).
Verwenden Sie rand() und getrandmax() hauptsächlich bei Legacy-Code, der diese Funktionen bereits einsetzt.
Fazit
Die Funktion getrandmax() gibt die Obergrenze von rand() aus – auf modernem PHP ein fester Wert von 2147483647. Ihr eigentlicher Nutzen liegt als Nenner beim Skalieren von zufälligen Ganzzahlen in float-Werte oder benutzerdefinierte Bereiche. Für neue Projekte empfiehlt sich die Familie mt_rand() oder random_int() für sicherheitskritische Zufälligkeit.