Start · Sprachen · PHP · Referenz · stats_rand_gen_gamma

stats_rand_gen_gamma

Funktion

Erzeugt eine pseudozufällige Zahl, die gemäß der Gamma-Verteilung mit den Parametern <code>a</code> (Shape) und <code>b</code> (Scale) verteilt ist.

Kategorie: math

Signatur

stats_rand_gen_gamma(float $a, float $b): float

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

Typ
float
Beschreibung
Gibt eine pseudozufällige Gleitkommazahl zurück, die der Gamma-Verteilung mit den angegebenen Parametern entspricht. Der Rückgabewert ist stets positiv.

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;
Gamma-verteilte Zufallszahl: 2.8473621...

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;
Empirischer Mittelwert: 5.9873 Theoretischer Erwartungswert (a*b): 6

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;
Exponentialverteilte Zufallszahl (Mittelwert 3): 1.9241...

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