Aktueller Standort: Startseite> Neueste Artikel> LCG_VALUE () Wie erstelle ich ein einfaches Wahrscheinlichkeitsmodell in Kombination mit Verteilungsfunktionen? Praktische Beispiel Erklärung

LCG_VALUE () Wie erstelle ich ein einfaches Wahrscheinlichkeitsmodell in Kombination mit Verteilungsfunktionen? Praktische Beispiel Erklärung

gitbox 2025-06-17

In der Wahrscheinlichkeitstheorie und -statistik erfordern simulierte Zufallsereignisse häufig die Erzeugung von Zufallszahlen, die einer spezifischen Verteilung entsprechen. Die von PHP bereitgestellte LCG_Value () -Funktion kann Pseudo-random-schwimmende Punktzahlen erzeugen, die innerhalb des Intervalls gleichmäßig verteilt sind [0,1). In diesem Artikel wird ein einfaches Wahrscheinlichkeitsmodell erstellt und seine nützlichen Methoden anhand von Beispielen demonstrieren, wie lcg_value () in Kombination mit der Verteilungsfunktion verwendet wird.


Was ist lcg_value ()

LCG_VALUE () ist eine in PHP eingebaute Pseudo-Random-Zahlen-Erzeugungsfunktion. Es basiert auf linearem kongruentem Generator und gibt eine schwimmende Punktzahl zurück, die gleichmäßig im [0, 1) -Intervall verteilt ist. Mit dieser Funktion können Sie gleichmäßige zufällige Ereignisse simulieren und dann durch Transformationen komplexere Verteilungen erzielen.

 <?php
$randNum = lcg_value();
echo $randNum; // Ausgabe 0 ankommen 1 Schwimmende Punktzahlen zwischen
?>

Erstellen Sie ein Wahrscheinlichkeitsmodell mithilfe von Verteilungsfunktionen

Ein Wahrscheinlichkeitsmodell definiert häufig die kumulative Verteilungsfunktion (CDF) von Zufallsvariablen. Wenn wir eine CDF mit der Zielverteilung haben F ( x ) F(x) und dann eine gleichmäßige Zufallsvariable gegeben U U n i f o r m ( 0 , 1 ) U \sim \mathrm{Uniform}(0,1) durch Berechnung X = F ? 1 ( U ) X = F^{-1}(U) (d. H. Inverse Funktion Transformation) Sie können zufällige Variablen erhalten, die der Zielverteilung entsprechen.

Einfach sagen:

  • Verwenden Sie LCG_VALUE (), um einheitliche Zufallszahlen zu erzeugen U U

  • Inverse CDF -Funktion unter Verwendung der Zielverteilung F ? 1 ( U ) F^{-1}(U) wird in eine zufällige Anzahl der Zielverteilung konvertiert


Praktisches Beispiel: Generieren Sie zufällige Anzahl diskreter Wahrscheinlichkeitsverteilungen

Angenommen, wir haben eine einfache diskrete Zufallsvariable X X Der Wert von ist {a, b, c} und die entsprechende Wahrscheinlichkeit beträgt {0,2, 0,5, 0,3}. Wie verwendete ich LCG_VALUE (), um diese zufällige Variable zu simulieren?

Die Idee ist:

  1. Konstruieren Sie die kumulative Verteilungsfunktion der diskreten Verteilung (CDF)

  2. Generieren Sie einheitliche Zufallszahl u = \ text {lcg_value} ()

  3. entsprechend u u Welches Intervall fällt fest, welches Ereignis zu Ausgabe ist?

 <?php
function sampleDiscrete() {
    $u = lcg_value();

    if ($u < 0.2) {
        return 'A'; // 0 <= u < 0.2
    } elseif ($u < 0.7) { // 0.2 <= u < 0.7 (0.2 + 0.5)
        return 'B';
    } else { // 0.7 <= u < 1
        return 'C';
    }
}

// Führen Sie den Test durch
$results = ['A' => 0, 'B' => 0, 'C' => 0];
for ($i = 0; $i < 10000; $i++) {
    $sample = sampleDiscrete();
    $results[$sample]++;
}

print_r($results);
?>

Nach dem Laufen werden die statistischen Ergebnisse die Wahrscheinlichkeit {0,2, 0,5, 0,3} annähern.


Praktisches Beispiel: Erzeugen Sie exponentiell verteilte Zufallszahlen

Für die kontinuierliche Verteilung ist auch die Anti-CDF-Methode anwendbar. Zum Beispiel ist die exponentielle Verteilung λ \lambda , sein CDF ist:

F ( x ) = 1 ? e ? λ x F(x) = 1 - e^{-\lambda x}

Die umgekehrte CDF ist:

F ? 1 ( u ) = ? ln ? ( 1 ? u ) λ F^{-1}(u) = -\frac{\ln(1-u)}{\lambda}

Beispiel für die Verwendung von LCG_VALUE (), um exponentiell verteilte Zufallszahlen zu generieren:

 <?php
function sampleExponential($lambda) {
    $u = lcg_value();
    return -log(1 - $u) / $lambda;
}

// 测试Ausgabe
for ($i = 0; $i < 5; $i++) {
    echo sampleExponential(2) . "\n"; // lambda = 2
}
?>

Zusammenfassen

  • lcg_value () erzeugt gleichmäßig verteilte Zufallszahlen, was die Grundlage für die Wahrscheinlichkeitssimulation ist.

  • In Kombination mit der kumulativen Verteilungsfunktion (CDF) der Zielverteilung oder ihrer inversen Funktion können zufällige Variablen, die eine willkürliche Verteilung erzeugen, transformiert werden.

  • Die diskrete Verteilung wird durch Intervalle geteilt und die kontinuierliche Verteilung wird durch inverse CDF -Transformation erreicht.

Diese Methode ist sowohl einfach als auch praktisch, geeignet für die schnelle Implementierung von Wahrscheinlichkeitsmodellen und simulierte zufällige Ereignisse.

Eine detailliertere Verwendung finden Sie im offiziellen PHP-Dokument: https://gitbox.net/manual/en/function.lcg-value.php .