Start · Sprachen · PHP · Referenz · getrandmax

getrandmax

Funktion

Gibt den größtmöglichen Wert zurück, den <code>rand()</code> liefern kann.

seit PHP 4.0.0 Kategorie: crypto

Signatur

getrandmax(): int

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

Typ
int
Beschreibung
Gibt die größte ganze Zahl zurück, die 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;
Größter möglicher rand()-Wert: 2147483647 Zufalls-Gleitkommazahl [0, 1]: 0.7341...

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;
}
Zufallszahl: 482391

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