Signatur
Beschreibung
Die Funktion stats_rand_gen_gamma() ist Bestandteil der PECL-Erweiterung stats und gibt eine zufällige Gleitkommazahl zurück, die der Gamma-Verteilung folgt. Die Gamma-Verteilung ist eine kontinuierliche Wahrscheinlichkeitsverteilung, die häufig in der Statistik, der Warteschlangentheorie und der Bayesschen Inferenz verwendet wird.
Der Parameter a (auch als Shape- oder Formparameter bezeichnet) bestimmt die Gestalt der Verteilungskurve, während b (Scale- oder Skalenparameter) die Streckung entlang der x-Achse kontrolliert. Beide Parameter müssen positiv sein.
Typische Anwendungsfälle sind die Modellierung von Wartezeiten, Lebenszeiten technischer Systeme oder als konjugierter Prior für Poissonverteilte Daten in der Bayesschen Statistik. Spezialfälle der Gamma-Verteilung sind die Exponential- (a=1) und die Chi-Quadrat-Verteilung.
Die Funktion gehört zur PECL stats-Bibliothek und steht nicht standardmäßig in PHP zur Verfügung – die Erweiterung muss separat installiert werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $a Pflicht | float | Formparameter (Shape) der Gamma-Verteilung. Muss größer als 0 sein. |
|
| $b Pflicht | float | Skalenparameter (Scale) der Gamma-Verteilung. Muss größer als 0 sein. |
Rückgabewert
Beispiele
Einfache Gamma-verteilte Zufallszahl erzeugen
<?php
// Voraussetzung: PECL-Erweiterung 'stats' ist installiert
// Gamma-Verteilung mit Shape a=2.0 und Scale b=1.5
$zufallswert = stats_rand_gen_gamma(2.0, 1.5);
echo "Gamma-verteilte Zufallszahl: " . $zufallswert . PHP_EOL;
Mehrere Stichproben und Mittelwert berechnen
<?php
// Voraussetzung: PECL-Erweiterung 'stats' ist installiert
$a = 3.0; // Shape-Parameter
$b = 2.0; // Scale-Parameter
$n = 10000;
$summe = 0.0;
for ($i = 0; $i < $n; $i++) {
$summe += stats_rand_gen_gamma($a, $b);
}
$mittelwert = $summe / $n;
// Theoretischer Erwartungswert: a * b = 3.0 * 2.0 = 6.0
echo "Empirischer Mittelwert: " . round($mittelwert, 4) . PHP_EOL;
echo "Theoretischer Erwartungswert (a*b): " . ($a * $b) . PHP_EOL;
Exponentialverteilung als Sonderfall (a=1)
<?php
// Voraussetzung: PECL-Erweiterung 'stats' ist installiert
// Gamma(a=1, b) entspricht einer Exponentialverteilung mit Mittelwert b
$b = 3.0;
$wert = stats_rand_gen_gamma(1.0, $b);
echo "Exponentialverteilte Zufallszahl (Mittelwert " . $b . "): " . $wert . PHP_EOL;
// Wichtig · Fallstricke
Achtung: Die Funktion ist Teil der PECL-Erweiterung stats und nicht im PHP-Kern enthalten. Die Installation erfolgt über pecl install stats und die anschließende Aktivierung in der php.ini.
Beide Parameter a und b müssen strikt positiv (> 0) sein. Werden ungültige Werte (z. B. 0 oder negative Zahlen) übergeben, kann das Verhalten undefiniert sein oder zu Fehlern führen.
Der Erwartungswert der Gamma-Verteilung berechnet sich als a * b, die Varianz als a * b². Dies ist hilfreich zur Plausibilitätsprüfung simulierter Stichproben.