Start · Sprachen · PHP · Referenz · stats_rand_ranf

stats_rand_ranf

Funktion

Erzeugt eine gleichmäßig verteilte zufällige Fließkommazahl im Bereich [0, 1).

Kategorie: math

Signatur

stats_rand_ranf(): float

Beschreibung

stats_rand_ranf() ist Teil der PECL-Erweiterung stats und liefert eine pseudozufällige Fließkommazahl, die gleichmäßig (uniform) im Intervall [0, 1) verteilt ist. Die Funktion basiert auf dem gleichen Zufallsgenerator, der auch von anderen Funktionen der stats-Erweiterung intern genutzt wird.

Die Funktion eignet sich überall dort, wo eine einheitlich verteilte Zufallszahl zwischen 0 und 1 benötigt wird, etwa als Grundlage für statistische Simulationen, Monte-Carlo-Methoden oder die Erzeugung anderer Wahrscheinlichkeitsverteilungen. Im Gegensatz zu mt_rand() gibt sie direkt einen Fließkommawert zurück, ohne dass eine Division durch den Maximalwert notwendig wäre.

Es ist zu beachten, dass diese Funktion zur PECL-Erweiterung stats gehört und nicht standardmäßig in PHP enthalten ist. Sie muss explizit installiert werden (pecl install stats). Für kryptografisch sichere Zufallszahlen ist stattdessen random_int() oder random_bytes() zu verwenden.

Rückgabewert

Typ
float
Beschreibung
Eine pseudozufällige Fließkommazahl im Bereich [0, 1) (0 ist eingeschlossen, 1 ist ausgeschlossen).

Beispiele

Einzelne Zufallszahl erzeugen

<?php
// Voraussetzung: PECL-Erweiterung 'stats' ist installiert
$zufallszahl = stats_rand_ranf();
echo 'Zufällige Fließkommazahl: ' . $zufallszahl . PHP_EOL;
// Beispielausgabe: 0.73821495823145
Zufällige Fließkommazahl: 0.73821495823145

Monte-Carlo-Schätzung von Pi

<?php
// Pi-Näherung mittels Monte-Carlo-Methode
$treffer = 0;
$versuche = 100000;

for ($i = 0; $i < $versuche; $i++) {
    $x = stats_rand_ranf();
    $y = stats_rand_ranf();
    if (($x * $x + $y * $y) <= 1.0) {
        $treffer++;
    }
}

$pi_schaetzung = 4 * $treffer / $versuche;
echo 'Geschätztes Pi: ' . $pi_schaetzung . PHP_EOL;
Geschätztes Pi: 3.14188

Zufallszahl in beliebigen Bereich skalieren

<?php
// Zufälliger Wert zwischen 10.0 und 50.0
$min = 10.0;
$max = 50.0;
$skaliert = $min + stats_rand_ranf() * ($max - $min);
echo 'Zufallswert zwischen 10 und 50: ' . round($skaliert, 4) . PHP_EOL;
Zufallswert zwischen 10 und 50: 32.4871

// Wichtig · Fallstricke

Sicherheitshinweis: stats_rand_ranf() ist ein Pseudozufallsgenerator und nicht für kryptografische Zwecke geeignet. Für sicherheitskritische Anwendungen (z. B. Token-Generierung, Passwörter) sollte random_bytes() oder random_int() verwendet werden.

Verfügbarkeit: Die Funktion ist nur verfügbar, wenn die PECL-Erweiterung stats installiert ist. Sie kann per pecl install stats nachinstalliert werden. Ohne diese Erweiterung führt ein Aufruf zu einem fatalen Fehler.

Das genaue Intervall kann je nach Version der stats-Erweiterung leicht variieren. Im Allgemeinen ist 0 eingeschlossen und 1 ausgeschlossen ([0, 1)).