mt_rand

(PHP 4, PHP 5, PHP 7, PHP 8)

mt_rand — Erzeugt eine Zufallszahl nach dem Mersenne-Twister-Verfahren

Beschreibung

function mt_rand(): int
function mt_rand(int $min, int $max): int

Viele Zufallszahlengeneratoren, die auf Ă€lteren libc-Versionen basieren, haben seltsame oder doch zumindest unerwartete Verhaltensweisen und sind zudem recht langsam. Die Funktion mt_rand() ist ein vollwertiger Ersatz fĂŒr das Ă€ltere rand(). Sie verwendet einen Zufallszahlengenerator mit den bekannten Charakteristika des » Mersenne Twisters, der Zufallszahlen viermal schneller generiert als der durchschnittliche libc-rand()-Aufruf.

Wenn die Funktion ohne Angabe von min und/oder max aufgerufen wird, gibt mt_rand() eine Pseudozufallszahl zwischen 0 und mt_getrandmax() zurĂŒck. Wenn zum Beispiel eine Zufallszahl zwischen 5 und 15 (inklusive) benötigt wird, muss mt_rand(5, 15) verwendet werden.

Achtung

Diese Funktion erzeugt keine kryptografisch sicheren Werte und darf nicht fĂŒr kryptografische Zwecke verwendet werden oder fĂŒr Zwecke, bei denen die zurĂŒckgegebenen Werte nicht abschĂ€tzbar sein dĂŒrfen.

Falls kryptographisch sichere Zufallszahlen benötigt werden, kann der Random\Randomizer mit der Random\Engine\Secure-Engine verwendet werden. FĂŒr einfache AnwendungsfĂ€lle bieten die Funktionen random_int() und random_bytes() eine bequeme und sichere API, die den CSPRNG des Betriebssystems verwendet.

Achtung

This function uses the global Mt19937 (“Mersenne Twister”) instance as the source of randomness and thus shares its state with all other functions using the global Mt19937. Using any of these functions advances the sequence for all the other functions, regardless of scope.

Generating repeatable sequences by seeding mt_srand() or srand() with a known value will also yield repeatable output from this function.

Prefer using Random\Randomizer methods in all newly written code.

Parameter-Liste

min

Der optionale niedrigste Wert, der zurĂŒckgegeben werden kann (Standardwert: 0)

max

Der optionale höchste Wert, der zurĂŒckgegeben werden kann (Standardwert: mt_getrandmax())

RĂŒckgabewerte

Ein zufÀlliger Integerwert zwischen min (oder 0) und max (oder mt_getrandmax(), inklusive).

Fehler/Exceptions

  • Wenn max kleiner ist als min, wird ein ValueError ausgelöst.

Changelog

Version Beschreibung
8.0.0 Wenn max kleiner ist als min, wird ein ValueError ausgelöst, wenn max kleiner ist als min; zuvor wurde ein E_WARNING erzeugt, und die Funktion gab false zurĂŒck.
7.2.0 mt_rand() erhielt einen Bugfix fĂŒr einen Modulus-Verzerrungsfehler. Das bedeutet, dass sich Folgen mit einem bestimmten Startwert ab PHP 7.1 auf 64bit-Rechnern unterscheiden können.
7.1.0 rand() ist nun ein Alias von mt_rand().
7.1.0 mt_rand() verwendet nun eine korrekte Version des Mersenne-Twister-Algorithmus. Um auf das vorherige Verhalten auszuweichen, kann mt_srand() mit MT_RAND_PHP als zweitem Parameter verwendet werden.

Beispiele

Beispiel #1 mt_rand()-Beispiel

<?php
echo mt_rand(), "\n";
echo
mt_rand(), "\n";

echo
mt_rand(5, 15), "\n";
?>

Das oben gezeigte Beispiel erzeugt eine Àhnliche Ausgabe wie:

1604716014
1478613278
6

Anmerkungen

Warnung

Der Bereich von min und max darf nicht grĂ¶ĂŸer sein als mt_getrandmax(). Das heißt, (max - min) <= mt_getrandmax(). Andernfalls kann mt_rand() schlechtere Zufallszahlen liefern als es sollte.

Siehe auch

  • mt_srand() - Initialisiert den Mersenne-Twister-Zufallszahlengenerator
  • mt_getrandmax() - Liefert den grĂ¶ĂŸtmöglichen Zufallswert
  • random_int() - Get a cryptographically secure, uniformly selected integer
  • random_bytes() - Get cryptographically secure random bytes
add a note

User Contributed Notes 1 note