Signatur
Beschreibung
stats_rand_gen_iuniform() gibt eine zufällige Ganzzahl zurück, die gleichmäßig (uniform) über das geschlossene Intervall zwischen low und high verteilt ist. Beide Grenzen sind inklusive, d. h. sowohl low als auch high können als Zufallswert auftreten.
Die Funktion gehört zur PECL-Erweiterung stats und basiert auf dem RANLIB-Zufallsgenerator. Sie eignet sich für statistische Simulationen, Monte-Carlo-Methoden oder überall dort, wo eine diskrete Gleichverteilung über einen Ganzzahlbereich benötigt wird.
Im Unterschied zur eingebauten PHP-Funktion rand() oder mt_rand() ist sie explizit für statistische Anwendungen ausgelegt und liefert eine theoretisch saubere Gleichverteilung gemäß dem zugrundeliegenden RANLIB-Algorithmus.
Voraussetzung für den Einsatz ist die Installation der PECL-Erweiterung stats. Ohne diese Erweiterung steht die Funktion nicht zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $low Pflicht | int | Die untere Grenze des Intervalls (inklusive). Muss kleiner oder gleich high sein. |
|
| $high Pflicht | int | Die obere Grenze des Intervalls (inklusive). Muss größer oder gleich low sein. |
Rückgabewert
low, high] zurück, die einer diskreten Gleichverteilung folgt.Beispiele
Einfache Zufallszahl im Bereich 1–100
<?php
// Zufällige Ganzzahl zwischen 1 und 100 (beide inklusive)
$zufallszahl = stats_rand_gen_iuniform(1, 100);
echo "Zufallszahl: " . $zufallszahl . PHP_EOL;
?>
Simulation eines fairen Würfelwurfs (1–6) mit Häufigkeitsverteilung
<?php
// Simuliert 6000 Würfelwürfe und zählt die Häufigkeiten
$haeufigkeit = array_fill(1, 6, 0);
for ($i = 0; $i < 6000; $i++) {
$wurf = stats_rand_gen_iuniform(1, 6);
$haeufigkeit[$wurf]++;
}
foreach ($haeufigkeit as $seite => $anzahl) {
$prozent = round($anzahl / 6000 * 100, 2);
echo "Seite {$seite}: {$anzahl} Mal ({$prozent}%)" . PHP_EOL;
}
?>
// Wichtig · Fallstricke
Achtung: Die Funktion ist Teil der PECL-Erweiterung stats, die nicht zum PHP-Kern gehört und separat installiert werden muss (pecl install stats). Viele Hosting-Umgebungen stellen diese Erweiterung nicht standardmäßig bereit.
Kryptographische Sicherheit: Der verwendete RANLIB-Generator ist nicht kryptographisch sicher. Für sicherheitsrelevante Anwendungen (z. B. Token-Generierung) sollte stattdessen random_int() verwendet werden.
Wird low größer als high übergeben, kann das Verhalten undefiniert sein oder zu einem Fehler führen. Es empfiehlt sich, die Parameter vor dem Aufruf zu validieren.