Signatur
Beschreibung
Die Funktion gmp_binomial() berechnet den Binomialkoeffizienten C(n, k), auch geschrieben als n über k oder n choose k. Dieser gibt an, auf wie viele Arten man k Elemente aus einer Menge von n Elementen ohne Wiederholung und ohne Berücksichtigung der Reihenfolge auswählen kann.
Der Binomialkoeffizient ist definiert als C(n, k) = n! / (k! * (n-k)!). Da GMP-Funktionen mit beliebig großen ganzen Zahlen arbeiten, können auch sehr große Werte für n berechnet werden, ohne dass Überläufe entstehen.
Typische Anwendungsgebiete sind Kombinatorik, Wahrscheinlichkeitsrechnung, Kryptographie sowie die Berechnung von Pascalschen Dreiecken oder Bernstein-Polynomen.
Der Parameter n kann als PHP-Integer, GMP-Objekt oder numerischer String übergeben werden. Der Parameter k muss ein nicht-negativer Integer sein. Ist k größer als n oder negativ, wird 0 zurückgegeben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $n Pflicht | GMP|int|string | Die Gesamtanzahl der Elemente (oberer Wert des Binomialkoeffizienten). Kann als Integer, GMP-Objekt oder numerischer String übergeben werden. | |
| $k Pflicht | int | Die Anzahl der auszuwählenden Elemente (unterer Wert des Binomialkoeffizienten). Muss ein nicht-negativer Integer sein. |
Rückgabewert
C(n, k) enthält. Ist k < 0 oder k > n, wird 0 zurückgegeben.Beispiele
Einfache Berechnung: 10 über 3
<?php
$result = gmp_binomial(10, 3);
echo gmp_strval($result); // 10! / (3! * 7!) = 120
Pascalsches Dreieck mit gmp_binomial
<?php
// Gibt die ersten 6 Zeilen des Pascalschen Dreiecks aus
for ($n = 0; $n <= 5; $n++) {
$zeile = [];
for ($k = 0; $k <= $n; $k++) {
$zeile[] = gmp_strval(gmp_binomial($n, $k));
}
echo implode(' ', $zeile) . PHP_EOL;
}
Sehr großer Binomialkoeffizient dank GMP
<?php
// C(100, 50) – ein Wert, der weit über PHP_INT_MAX liegt
$result = gmp_binomial(100, 50);
echo gmp_strval($result);
// Wichtig · Fallstricke
Verfügbarkeit: gmp_binomial() ist ab PHP 8.0.0 verfügbar und erfordert die GMP-Erweiterung (ext-gmp). In älteren PHP-Versionen muss der Binomialkoeffizient manuell über gmp_fact() und gmp_div_q() berechnet werden.
Randfälle: Ist k negativ oder größer als n, gibt die Funktion ein GMP-Objekt mit dem Wert 0 zurück und wirft keinen Fehler. Bei k = 0 oder k = n ist das Ergebnis stets 1.