Start · Sprachen · PHP · Referenz · stats_rand_gen_iuniform

stats_rand_gen_iuniform

Funktion

Erzeugt eine pseudozufällige, gleichmäßig verteilte Ganzzahl im geschlossenen Intervall [<code>low</code>, <code>high</code>].

Kategorie: math

Signatur

stats_rand_gen_iuniform(int $low, int $high): int

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

Typ
int
Beschreibung
Gibt eine pseudozufällige Ganzzahl im geschlossenen Intervall [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;
?>
Zufallszahl: 42

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;
}
?>
Seite 1: 998 Mal (16.63%) Seite 2: 1005 Mal (16.75%) Seite 3: 997 Mal (16.62%) Seite 4: 1001 Mal (16.68%) Seite 5: 1003 Mal (16.72%) Seite 6: 996 Mal (16.60%)

// 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.