Start · Sprachen · PHP · Referenz · gmp_binomial

gmp_binomial

Funktion

Berechnet den Binomialkoeffizienten <code>C(n, k)</code> ("n über k") für gegebene ganzzahlige Werte.

seit PHP 8.0.0 Kategorie: math

Signatur

gmp_binomial(GMP|int|string $n, int $k): GMP

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

Typ
GMP
Beschreibung
Gibt ein GMP-Objekt zurück, das den Binomialkoeffizienten 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
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;
}
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

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);
100891344545564193334812497256

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