Signatur
Beschreibung
Die Funktion stats_rand_gen_ibinomial_negative() ist Teil der stats-Erweiterung für PHP und erzeugt eine zufällige ganzzahlige Stichprobe aus der negativen Binomialverteilung (auch Pascal-Verteilung genannt). Diese Verteilung beschreibt die Anzahl der Misserfolge, die auftreten, bevor eine bestimmte Anzahl von Erfolgen n in einer Folge unabhängiger Bernoulli-Experimente mit der Erfolgswahrscheinlichkeit p erzielt wird.
Typische Anwendungsfälle sind Simulationen von Wartezeiten, Qualitätskontrolle (wie viele fehlerhafte Teile treten auf, bevor eine bestimmte Anzahl fehlerfreier Teile produziert wird) oder Modellierungen in der Epidemiologie und Versicherungsmathematik, wo Überstreuung gegenüber der Poisson-Verteilung berücksichtigt werden muss.
Der Parameter n gibt die gewünschte Anzahl an Erfolgen an, während p die Wahrscheinlichkeit eines einzelnen Erfolgs pro Versuch definiert. Die Funktion ist in der RANDLIB-Bibliothek implementiert und setzt eine korrekt installierte PHP-stats-Erweiterung voraus.
nmuss eine positive ganze Zahl sein (n >= 1).pmuss im Bereich0 < p <= 1liegen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $n Pflicht | int | Die Anzahl der gewünschten Erfolge (positiver ganzzahliger Wert, n >= 1). Gibt an, nach wie vielen Erfolgen die Simulation stoppt. |
|
| $p Pflicht | float | Die Erfolgswahrscheinlichkeit eines einzelnen Bernoulli-Versuchs. Muss im Bereich 0 < p <= 1 liegen. |
Rückgabewert
n-ten Erfolg.Beispiele
Einfache Zufallsstichprobe aus der negativen Binomialverteilung
<?php
// Voraussetzung: PHP-Erweiterung 'stats' ist installiert
// Wir möchten 5 Erfolge simulieren, jeder Versuch hat 40% Erfolgswahrscheinlichkeit
$n = 5;
$p = 0.4;
$zufallszahl = stats_rand_gen_ibinomial_negative($n, $p);
echo "Anzahl der Misserfolge vor dem {$n}. Erfolg: " . $zufallszahl . PHP_EOL;
Mehrere Stichproben zur Schätzung des Erwartungswerts
<?php
// Voraussetzung: PHP-Erweiterung 'stats' ist installiert
$n = 3; // Ziel: 3 Erfolge
$p = 0.5; // Erfolgswahrscheinlichkeit: 50%
$iterationen = 10000;
$summe = 0;
for ($i = 0; $i < $iterationen; $i++) {
$summe += stats_rand_gen_ibinomial_negative($n, $p);
}
$mittelwert = $summe / $iterationen;
// Theoretischer Erwartungswert: n * (1 - p) / p = 3 * 0.5 / 0.5 = 3
echo sprintf(
"Empirischer Mittelwert: %.4f (Theoretischer Erwartungswert: %.4f)\n",
$mittelwert,
$n * (1 - $p) / $p
);
// Wichtig · Fallstricke
Wichtig: Diese Funktion erfordert die separate PHP-Erweiterung stats (PECL), die nicht standardmäßig in PHP enthalten ist. Sie muss über PECL installiert werden (pecl install stats).
Ungültige Parameterwerte (z. B. n <= 0 oder p <= 0 bzw. p > 1) können zu undefiniertem Verhalten oder Fehlern führen. Eine Eingabevalidierung vor dem Aufruf ist daher empfehlenswert.
Der interne Zufallszahlengenerator basiert auf der RANDLIB-Bibliothek und ist nicht kryptografisch sicher. Für sicherheitskritische Anwendungen sollte random_int() oder random_bytes() verwendet werden.