Signatur
Beschreibung
getrandmax() liefert die plattformabhängige Obergrenze des Zufallszahlengenerators, der von rand() verwendet wird. Dieser Wert entspricht in der Regel RAND_MAX aus der C-Laufzeitbibliothek des jeweiligen Betriebssystems und ist deshalb nicht auf allen Plattformen identisch (typischerweise 2147483647 auf 64-Bit-Systemen, aber 32767 auf älteren Windows-Plattformen).
Die Funktion ist dann nützlich, wenn man prüfen möchte, ob der verfügbare Zahlenbereich für eine bestimmte Aufgabe ausreicht, oder wenn man Zufallszahlen manuell in einen anderen Wertebereich skalieren möchte. So lässt sich z. B. mit rand() / getrandmax() eine Gleitkommazahl zwischen 0 und 1 erzeugen.
Für kryptographische Zwecke oder sicherheitskritische Anwendungen sollte weder rand() noch getrandmax() verwendet werden. Stattdessen empfiehlt sich random_int() oder random_bytes(), die auf einem kryptographisch sicheren Zufallsgenerator basieren.
Rückgabewert
rand() zurückliefern kann. Der Wert ist plattformabhängig, liegt aber in der Regel bei 2147483647 auf modernen 64-Bit-Systemen.Beispiele
Maximalen Zufallswert ausgeben
<?php
$max = getrandmax();
echo "Größter möglicher rand()-Wert: " . $max . PHP_EOL;
// Zufallszahl zwischen 0 und 1 (Gleitkomma)
$float = rand() / getrandmax();
echo "Zufalls-Gleitkommazahl [0, 1]: " . $float . PHP_EOL;
Plattformcheck vor Verwendung von rand()
<?php
$erforderlichesMaximum = 1_000_000;
if (getrandmax() >= $erforderlichesMaximum) {
$zufallszahl = rand(0, $erforderlichesMaximum);
echo "Zufallszahl: " . $zufallszahl . PHP_EOL;
} else {
echo "rand() reicht nicht aus – verwende random_int()" . PHP_EOL;
$zufallszahl = random_int(0, $erforderlichesMaximum);
echo "Zufallszahl (sicher): " . $zufallszahl . PHP_EOL;
}
// Wichtig · Fallstricke
Sicherheitshinweis: rand() und getrandmax() sind nicht für kryptographische Zwecke geeignet. Der verwendete Zufallsgenerator ist vorhersehbar und darf nicht für Passwort-Generierung, Token, Sitzungs-IDs oder ähnlich sicherheitsrelevante Aufgaben verwendet werden. Verwende stattdessen random_int() oder random_bytes().
Die Rückgabe von getrandmax() ist plattformabhängig: Auf älteren Windows-Systemen kann der Wert nur 32767 betragen, was den nutzbaren Zufallsbereich stark einschränkt.