Erzeugt eine Zufallszahl nach dem Mersenne-Twister-Verfahren

# 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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open