Signatur
Beschreibung
mt_getrandmax() liefert den maximalen Ganzzahlwert, den die Mersenne-Twister-basierte Zufallszahlenfunktion mt_rand() zurückgeben kann. Dieser Wert beträgt auf den meisten Plattformen 2147483647 (2³¹ − 1).
Die Funktion ist nützlich, wenn man Zufallszahlen in einem bestimmten Verhältnis skalieren oder normalisieren möchte – zum Beispiel um eine Gleitkommazahl zwischen 0 und 1 zu erzeugen: mt_rand() / mt_getrandmax(). Damit lässt sich der Wertebereich portabel nutzen, ohne den Maximalwert hartzucodieren.
Zu beachten ist, dass mt_rand() und damit auch mt_getrandmax() auf dem Mersenne-Twister-Algorithmus basieren und für statistische Simulationen geeignet sind, nicht jedoch für kryptografische Zwecke. Für sicherheitskritische Anwendungen sollte stattdessen random_int() und PHP_INT_MAX verwendet werden.
Rückgabewert
mt_rand() liefern kann. Dieser Wert ist plattformabhängig, beträgt aber auf den meisten 32- und 64-Bit-Systemen 2147483647.Beispiele
Maximalen Zufallswert ausgeben
<?php
// Maximalen Wert von mt_rand() ermitteln
$max = mt_getrandmax();
echo "Maximaler Zufallswert: " . $max . PHP_EOL;
// Eine Zufallszahl erzeugen und den Maximalwert anzeigen
$zufallszahl = mt_rand();
echo "Zufallszahl: " . $zufallszahl . PHP_EOL;
echo "Liegt im Bereich 0 bis " . $max . PHP_EOL;
Normalisierte Gleitkommazahl zwischen 0.0 und 1.0 erzeugen
<?php
// Gleitkommazahl zwischen 0.0 (inkl.) und 1.0 (inkl.) erzeugen
function zufallsFloat(): float {
return mt_rand() / mt_getrandmax();
}
for ($i = 0; $i < 5; $i++) {
echo number_format(zufallsFloat(), 6) . PHP_EOL;
}
// Wichtig · Fallstricke
Sicherheitshinweis: mt_rand() und mt_getrandmax() sind nicht kryptografisch sicher. Für Passwörter, Tokens, Nonces oder andere sicherheitskritische Zufallswerte muss random_int() (ab PHP 7.0) verwendet werden, das intern CSPRNG (Cryptographically Secure Pseudo-Random Number Generator) nutzt.
Ab PHP 7.1 wurde das Verhalten von mt_rand() geändert (Fix eines Off-by-one-Fehlers im Mersenne-Twister). Dadurch können Sequenzen, die mit demselben Seed erzeugt werden, zwischen PHP < 7.1 und PHP ≥ 7.1 abweichen. mt_getrandmax() selbst ist davon nicht betroffen.