lcg_value()
Die Funktion lcg_value() in PHP erzeugt eine Pseudo-Zufallszahl mithilfe des linearen Kongruenzgenerators (LCG).
Die Funktion lcg_value() in PHP ist eine eingebaute Funktion, die mithilfe des linearen Kongruenzgenerator-Algorithmus (LCG) einen pseudo-zufälligen Float-Wert erzeugt. Sie nimmt keine Parameter entgegen und verwendet einen festen internen Startwert, um ihre Sequenz zu produzieren. Diese Seite erklärt, was die Funktion zurückgibt, wie man sie verwendet, wie man ihre Ausgabe auf einen bestimmten Bereich skaliert und wann stattdessen eine sicherere Alternative zu verwenden ist.
Was ist die Funktion lcg_value()?
Ein linearer Kongruenzgenerator ist ein klassischer, schlanker Algorithmus zur Erzeugung einer Zahlenfolge, die zufällig wirkt, aber vollständig durch einen Startwert bestimmt wird. PHP stellt diesen über lcg_value() bereit, das einen Float im Bereich (0, 1) zurückgibt – also größer als 0 und kleiner als 1.
Zwei Eigenschaften sind in der Praxis wichtig:
- Keine Argumente. Die Funktion wird als
lcg_value()mit leeren Klammern aufgerufen; das Übergeben von Argumenten hat keinen Effekt. - Float-Ergebnis. Sie gibt immer einen
floatzurück, niemals einen Integer. Um eine ganze Zahl zu erhalten, muss das Ergebnis selbst skaliert werden (siehe unten).
Verwendung der Funktion lcg_value()
Die Verwendung der Funktion lcg_value() in PHP ist unkompliziert. Hier ist ein einfaches Beispiel:
In diesem Beispiel rufen wir die Funktion lcg_value() auf, um eine Pseudo-Zufallszahl zu erzeugen. Das Ergebnis wird in einer Variablen gespeichert und auf dem Bildschirm ausgegeben.
Zahlen in einem bestimmten Bereich erzeugen
Da lcg_value() einen Float zwischen 0 und 1 zurückgibt, kann dieser auf einen gewünschten Bereich skaliert oder zur Erzeugung von ganzen Zahlen verwendet werden:
<?php
// Generate a random integer between 1 and 100
$min = 1;
$max = 100;
$random_int = (int)($min + lcg_value() * ($max - $min + 1));
echo $random_int;
?>Wichtige Hinweise
- Nicht kryptografisch sicher: Der LCG-Algorithmus ist vorhersagbar und sollte nicht für sicherheitsrelevante Aufgaben wie das Erzeugen von Tokens, Passwörtern oder Session-IDs verwendet werden. Für kryptografische Zwecke sollte
random_int()oderrandom_bytes()verwendet werden. - Fester Startwert: Die Funktion verwendet einen festen internen Startwert, was bedeutet, dass die Zahlenfolge bei verschiedenen Skriptausführungen identisch ist, sofern der PHP-Prozess nicht neu gestartet wird.
- Bereich ist exklusiv: Der zurückgegebene Wert ist niemals genau 0 oder 1, sodass die obige Formel zur Skalierung auf ganze Zahlen beide Endpunkte des Bereichs
$min–$maxsicher einschließen kann. - Veraltet in PHP 8.4: Ab PHP 8.4 ist
lcg_value()zugunsten von\Random\Randomizer::getFloat()als veraltet markiert. Die Funktion funktioniert weiterhin, gibt jedoch einen Deprecation-Hinweis aus. Daher sollte in neuem Code die neuere API bevorzugt werden.
lcg_value() im Vergleich zu anderen Zufallsfunktionen
lcg_value() ist eine von mehreren Zufallshilfen in PHP. Die Wahl sollte sich nach dem jeweiligen Bedarf richten:
- Für zufällige Integer in einem Bereich sind
rand()undmt_rand()meist praktischer als die manuelle Skalierung vonlcg_value(). - Um die Obergrenze zu ermitteln, die diese Generatoren zurückgeben können, siehe
getrandmax()undmt_getrandmax(). - Für reproduzierbare Sequenzen beim Testen kann der Mersenne-Twister-Generator mit
mt_srand()initialisiert werden. - Für sicherheitsrelevante Zufallswerte sollte
random_int()allen oben genannten Alternativen vorgezogen werden.
Fazit
Die Funktion lcg_value() bietet eine einfache Möglichkeit, Pseudo-Zufalls-Floats in PHP zu erzeugen. Obwohl sie für einfache Simulationen oder nicht sicherheitsrelevante Anwendungen nützlich ist, bevorzugt die moderne PHP-Entwicklung typischerweise random_int() für bessere Zufälligkeit und Sicherheit. Wir hoffen, dass dieser Leitfaden dabei hilft, den effektiven Einsatz von lcg_value() in eigenen Projekten zu verstehen.