Start · Sprachen · PHP · Referenz · stats_stat_factorial

stats_stat_factorial

Funktion

Berechnet die Fakultät einer nicht-negativen Ganzzahl und gibt das Ergebnis als Gleitkommazahl zurück.

Kategorie: math

Signatur

stats_stat_factorial(int $n): float

Beschreibung

stats_stat_factorial ist Teil der PECL-Erweiterung stats und berechnet die mathematische Fakultät (n!) einer übergebenen nicht-negativen Ganzzahl. Die Fakultät ist definiert als das Produkt aller positiven ganzen Zahlen von 1 bis n, also n! = 1 × 2 × 3 × … × n. Per Konvention gilt 0! = 1.

Die Funktion wird typischerweise in statistischen Berechnungen eingesetzt, etwa bei Permutationen, Kombinationen (Binomialkoeffizient) oder Wahrscheinlichkeitsverteilungen wie der Poisson- oder der Binomialverteilung. Da die Fakultät sehr schnell sehr große Werte annimmt, wird das Ergebnis als float zurückgegeben, um auch größere Eingabewerte abzudecken.

Zu beachten ist, dass stats_stat_factorial zur PECL-Erweiterung stats gehört, die separat installiert werden muss und nicht standardmäßig in PHP enthalten ist. Für reine Ganzzahl-Genauigkeit bei kleinen n kann alternativ eine eigene rekursive oder iterative Implementierung verwendet werden.

Parameter

Name Typ Default Beschreibung
$n Pflicht int Die nicht-negative Ganzzahl, deren Fakultät berechnet werden soll. Bei n = 0 wird 1 zurückgegeben. Negative Werte führen zu undefiniertem Verhalten oder einem Fehler.

Rückgabewert

Typ
float
Beschreibung
Gibt die berechnete Fakultät von n als float zurück. Da Fakultäten sehr schnell wachsen, werden große Werte als Gleitkommazahl mit möglichem Präzisionsverlust dargestellt.

Beispiele

Einfache Fakultätsberechnungen

<?php
// Voraussetzung: PECL-Erweiterung 'stats' muss installiert sein

$values = [0, 1, 5, 10, 20];

foreach ($values as $n) {
    $result = stats_stat_factorial($n);
    echo "{$n}! = {$result}\n";
}
0! = 1 1! = 1 5! = 120 10! = 3628800 20! = 2.4329020081766E+18

Berechnung eines Binomialkoeffizienten mit stats_stat_factorial

<?php
// Binomialkoeffizient C(n, k) = n! / (k! * (n-k)!)
function binomial_coefficient(int $n, int $k): float {
    return stats_stat_factorial($n)
         / (stats_stat_factorial($k) * stats_stat_factorial($n - $k));
}

$n = 10;
$k = 3;

$result = binomial_coefficient($n, $k);
echo "C({$n}, {$k}) = {$result}\n";
// Anzahl der Möglichkeiten, 3 aus 10 auszuwählen
C(10, 3) = 120

// Wichtig · Fallstricke

Achtung: Die Funktion gehört zur PECL-Erweiterung stats, die nicht standardmäßig mit PHP ausgeliefert wird. Sie muss über PECL installiert werden (pecl install stats).

Für sehr große Werte von n (ab ca. 170) überschreitet das Ergebnis den darstellbaren Bereich eines float (IEEE 754 Double Precision) und liefert INF. Negative Eingabewerte sind mathematisch nicht definiert und können zu Fehlern oder unerwarteten Ergebnissen führen.

Falls die stats-Erweiterung nicht verfügbar ist, kann die PHP-Standardfunktion array_product(range(1, $n)) als einfache Alternative für kleine n genutzt werden.