Signatur
Beschreibung
Die Funktion stats_dens_pmf_binomial() gehört zur PECL-Erweiterung stats und berechnet den Wert der Wahrscheinlichkeitsmassenfunktion (PMF – Probability Mass Function) der Binomialverteilung. Sie gibt die Wahrscheinlichkeit zurück, bei genau x Erfolgen in n unabhängigen Bernoulli-Versuchen, wobei jeder Versuch die Erfolgswahrscheinlichkeit pi besitzt.
Die Binomialverteilung ist eine diskrete Wahrscheinlichkeitsverteilung, die häufig in der Qualitätssicherung, Umfrageauswertung, Genetik und anderen Bereichen eingesetzt wird, um zu modellieren, wie oft ein binäres Ereignis (Erfolg/Misserfolg) in einer festen Anzahl von unabhängigen Wiederholungen auftritt.
Die zugrundeliegende Formel lautet: P(X = x) = C(n, x) * pi^x * (1 - pi)^(n - x), wobei C(n, x) den Binomialkoeffizienten bezeichnet. Die Funktion ist damit besonders nützlich, wenn man die exakte Wahrscheinlichkeit für einen bestimmten Ausgang kennen möchte, ohne die Formel manuell zu implementieren.
Wichtig: Diese Funktion setzt die Installation der PECL-Erweiterung stats voraus, die nicht im PHP-Standardumfang enthalten ist. Sie muss separat installiert und in der php.ini aktiviert werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $x Pflicht | int | Die Anzahl der gewünschten Erfolge (nicht-negative ganze Zahl, 0 <= x <= n). |
|
| $n Pflicht | int | Die Gesamtanzahl der unabhängigen Bernoulli-Versuche (positive ganze Zahl). | |
| $pi Pflicht | float | Die Erfolgswahrscheinlichkeit eines einzelnen Versuchs. Muss im Bereich 0.0 <= pi <= 1.0 liegen. |
Rückgabewert
x Erfolgen in n Versuchen mit Erfolgswahrscheinlichkeit pi. Der Rückgabewert liegt stets zwischen 0.0 und 1.0. Bei ungültigen Parametern kann 0.0 oder ein NaN-Wert zurückgegeben werden.Beispiele
Wahrscheinlichkeit für genau 3 Sechsen bei 10 Würfelwürfen
<?php
// Wie wahrscheinlich ist es, bei 10 Würfelwürfen genau 3 Sechsen zu erhalten?
// Erfolgswahrscheinlichkeit einer Sechs: 1/6 ≈ 0.1667
$x = 3; // gewünschte Anzahl Erfolge
$n = 10; // Anzahl Versuche
$pi = 1 / 6; // Erfolgswahrscheinlichkeit
$wahrscheinlichkeit = stats_dens_pmf_binomial($x, $n, $pi);
echo sprintf(
"P(X = %d | n = %d, pi = %.4f) = %.6f",
$x, $n, $pi, $wahrscheinlichkeit
);
// Ausgabe: P(X = 3 | n = 10, pi = 0.1667) = 0.155220
Qualitätskontrolle: Wahrscheinlichkeit für defekte Bauteile
<?php
// Eine Fabrik produziert Bauteile mit 5% Ausschussquote.
// Wie wahrscheinlich ist es, in einer Charge von 20 Teilen genau 2 Defekte zu finden?
$x = 2; // genau 2 defekte Teile
$n = 20; // Chargengröße
$pi = 0.05; // Ausschusswahrscheinlichkeit
$p = stats_dens_pmf_binomial($x, $n, $pi);
echo sprintf(
"Wahrscheinlichkeit für genau %d Defekte bei %d Teilen: %.4f (%.2f%%)",
$x, $n, $p, $p * 100
);
// Ausgabe: Wahrscheinlichkeit für genau 2 Defekte bei 20 Teilen: 0.1887 (18.87%)
// Wichtig · Fallstricke
PECL-Abhängigkeit: stats_dens_pmf_binomial() ist Teil der PECL stats-Erweiterung und steht in einer Standard-PHP-Installation nicht zur Verfügung. Installation via pecl install stats und anschließender Eintrag in der php.ini (extension=stats.so) sind erforderlich.
Parametergrenzen: x muss im Bereich [0, n] liegen, pi muss zwischen 0.0 und 1.0 liegen und n muss größer als 0 sein. Bei Verletzung dieser Grenzen ist das Verhalten undefiniert oder liefert 0.
Alternativen: Falls die PECL-Erweiterung nicht verfügbar ist, kann der Wert manuell über die Formel C(n, x) * pow($pi, $x) * pow(1 - $pi, $n - $x) berechnet werden, wobei C(n, x) über die gmp_fact()-Funktion oder iterativ ermittelt werden kann.