lcg_value

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

lcg_value — Kongruenzgenerator fĂŒr Pseudozufallszahlen

Warnung

Diese Funktion ist seit PHP 8.4.0 als DEPRECATED (veraltet) markiert. Von der Verwendung dieser Funktion wird dringend abgeraten.

Beschreibung

#[\Deprecated]
function lcg_value(): float

lcg_value() gibt eine Pseudozufallszahl zwischen Null und Eins (inklusive) zurĂŒck. Die Funktion kombiniert zwei gemischte kongruente Kongruenzgeneratoren mit den Perioden 2^31 - 85 und 2^31 - 249. Die Periode der von dieser Funktion generierten Pseudozufallsfolge entspricht dem Produkt dieser beiden Primzahlen.

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

Wenn der RĂŒckgabewert durch Multiplikation oder Addition auf ein anderes Intervall skaliert wird (eine sogenannte affine Transformation), kann dies zu einer Verzerrung des resultierenden Wertes fĂŒhren, weil Gleitkommazahlen auf der Zahlengeraden nicht gleichmĂ€ĂŸig dicht sind. Da nicht alle Werte exakt durch eine Gleitkommazahl dargestellt werden können, kann das Ergebnis der affinen Transformation auch zu Werten außerhalb des gewĂŒnschten Intervalls fĂŒhren.

Um einen zufÀlligen Gleitkommawert innerhalb eines beliebigen Intervalls zu erzeugen, kann Random\Randomizer::getFloat() verwendet werden. Mit Random\Randomizer::getInt() kann eine zufÀllige Ganzzahl innerhalb eines beliebigen Intervalls erzeugt werden.

Parameter-Liste

Diese Funktion besitzt keine Parameter.

RĂŒckgabewerte

Eine Pseudozufallszahl zwischen 0.0 und 1.0 (inklusive) als float.

Changelog

Version Beschreibung
8.4.0 Diese Funktion ist veraltet.

Siehe auch

add a note

User Contributed Notes 2 notes

up
16
daniel dot baulig at gmx dot de ¶
16 years ago
Choose your weapon:
<?php
function mt_randf($min, $max)
{
    return $min + abs($max - $min) * mt_rand(0, mt_getrandmax())/mt_getrandmax(); 
}
function lcg_randf($min, $max)
{
    return $min + lcg_value() * abs($max - $min);
}
function randf($min, $max)
{
    return $min + rand(0,getrandmax()) / getrandmax() * abs($max - $min);
}?>
up
16
rok kralj gmail com ¶
19 years ago
An elegant way to return random float between two numbers:

<?php
function random_float ($min,$max) {
   return ($min+lcg_value()*(abs($max-$min)));
}
?>