Signatur
Beschreibung
Die Funktion stats_rand_gen_beta() gehört zur PECL-Erweiterung stats und gibt eine zufällige Gleitkommazahl zurück, die der Beta-Verteilung mit den beiden Formparametern a (Alpha) und b (Beta) folgt. Der Rückgabewert liegt stets im offenen Intervall (0, 1).
Die Beta-Verteilung ist besonders nützlich, wenn Wahrscheinlichkeiten oder Anteile modelliert werden sollen – beispielsweise in der Bayes'schen Statistik, bei A/B-Tests oder zur Simulation von Erfolgsquoten. Je nach Wahl von Alpha und Beta kann die Verteilung symmetrisch, links- oder rechtsschief, U-förmig oder gleichmäßig sein.
Beide Parameter müssen positiv sein (a > 0 und b > 0). Ungültige Werte (z. B. negative Zahlen oder null) können zu undefiniertem Verhalten oder Fehlern führen. Die Funktion nutzt intern einen Zufallszahlengenerator der stats-Bibliothek, der mit stats_rand_setall() gesetzt werden kann.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $a Pflicht | float | Formparameter Alpha der Beta-Verteilung. Muss größer als 0 sein. |
|
| $b Pflicht | float | Formparameter Beta der Beta-Verteilung. Muss größer als 0 sein. |
Rückgabewert
(0, 1), die gemäß der Beta-Verteilung mit den Parametern a und b erzeugt wurde.Beispiele
Einzelne Beta-verteilte Zufallszahl erzeugen
<?php
// Beta-Verteilung mit Alpha=2 und Beta=5 (rechtsschief, Modus bei ca. 0.17)
$alpha = 2.0;
$beta = 5.0;
$zufallswert = stats_rand_gen_beta($alpha, $beta);
echo 'Beta-verteilter Zufallswert: ' . $zufallswert . PHP_EOL;
// Ausgabe: ein Wert zwischen 0 und 1, z. B. 0.18432...
Simulation von Klickraten per Beta-Verteilung (Bayes A/B-Test)
<?php
// Stichprobendaten: Variante A hat 80 Klicks bei 400 Impressionen,
// Variante B hat 60 Klicks bei 300 Impressionen.
// Beta-Posterior: Alpha = 1 + Klicks, Beta = 1 + (Impressionen - Klicks)
$alpha_a = 1 + 80; // 81
$beta_a = 1 + 320; // 321
$alpha_b = 1 + 60; // 61
$beta_b = 1 + 240; // 241
$simulationen = 10000;
$gewinne_a = 0;
for ($i = 0; $i < $simulationen; $i++) {
$rate_a = stats_rand_gen_beta($alpha_a, $beta_a);
$rate_b = stats_rand_gen_beta($alpha_b, $beta_b);
if ($rate_a > $rate_b) {
$gewinne_a++;
}
}
$wahrscheinlichkeit = $gewinne_a / $simulationen;
echo sprintf(
'Wahrscheinlichkeit, dass Variante A besser ist: %.2f%%' . PHP_EOL,
$wahrscheinlichkeit * 100
);
// Wichtig · Fallstricke
Voraussetzung: Die Funktion ist Teil der PECL-Erweiterung stats und steht nicht im PHP-Kern zur Verfügung. Sie muss separat installiert und in der php.ini aktiviert werden (extension=stats).
Parametervalidierung: Beide Parameter a und b müssen strikt positiv sein. Übergabe von 0 oder negativen Werten führt zu undefiniertem Verhalten und sollte durch eigene Validierung verhindert werden.
Der interne Zufallszahlengenerator der stats-Erweiterung ist nicht kryptografisch sicher und eignet sich nicht für sicherheitskritische Anwendungen. Für kryptografische Zwecke sollte stattdessen random_bytes() oder random_int() verwendet werden.