Hallo,
ich suche eine Möglichkeit mit PHP die in Excel verfügbare Formel BINOM.VERT nachzustellen. Leider laufen die Werte bei N über K aus dem Wertebereich und PHP bricht die Berechnung ab. In Excel kann ich die Werte näherungsweise berechnen. Wie wahrscheinlich ist es, daß bei n unabhängigen Versuchen k Erfolge gemessen werden, wenn die Wahrscheinlichkeit für einen Erfolg im Schnitt bei p liegt?
Beispiel in Excel:
n = Anzahl unabhängiger Versuche
k = Anzahl Erfolge
p = Wahrscheinlichkeit für den Erfolg
n = 13346;
k = 6929,5;
p = 0,5192;
=BINOM.VERT(6929,5;13346;0,5192;WAHR) = 0,01 also 1%
Beispiel PHP:
ich suche eine Möglichkeit mit PHP die in Excel verfügbare Formel BINOM.VERT nachzustellen. Leider laufen die Werte bei N über K aus dem Wertebereich und PHP bricht die Berechnung ab. In Excel kann ich die Werte näherungsweise berechnen. Wie wahrscheinlich ist es, daß bei n unabhängigen Versuchen k Erfolge gemessen werden, wenn die Wahrscheinlichkeit für einen Erfolg im Schnitt bei p liegt?
Beispiel in Excel:
n = Anzahl unabhängiger Versuche
k = Anzahl Erfolge
p = Wahrscheinlichkeit für den Erfolg
n = 13346;
k = 6929,5;
p = 0,5192;
=BINOM.VERT(6929,5;13346;0,5192;WAHR) = 0,01 also 1%
Beispiel PHP:
PHP-Code:
$n = Anzahl unabhängiger Versuche
$k = Anzahl Erfolge
$p = Wahrscheinlichkeit für den Erfolg
$binomdist = binomdist($n, $k, $p);
PHP-Code:
function nChooseK($n, $k)
{
$top = 1;
$bottom = 1;
for ($i = 0; $i < $k; $i++) {
$top = bcmul($top, $n - $i);
$bottom = bcmul($bottom, $i + 1);
}
return bcdiv($top, $bottom);
}
function binomdist($n, $k, $p, $cumulative = false)
{
$res = 0;
if ($cumulative) {
for ($i = 0; $i <= $k; $i++) {
$res += nChooseK($n, $i) * pow($p, $i) * pow(1 - $p, $n - $i);
}
} else {
$res = nChooseK($n, $k) * pow($p, $k) * pow(1 - $p, $n - $k);
}
return $res;
}
Kommentar