Start · Sprachen · PHP · Referenz · stats_rand_gen_beta

stats_rand_gen_beta

Funktion

Erzeugt eine einzelne Zufallszahl, die gemäß der Beta-Verteilung mit den Formparametern <code>a</code> und <code>b</code> verteilt ist.

Kategorie: math

Signatur

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

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

Typ
float
Beschreibung
Eine zufällige Gleitkommazahl aus dem offenen Intervall (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...
Beta-verteilter Zufallswert: 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
);
Wahrscheinlichkeit, dass Variante A besser ist: 52.34%

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