Gewichtete Zufallszahlen generieren: Beyond Rejection Sampling
Im Bereich der Wahrscheinlichkeit dient die Generierung gewichteter Zufallszahlen als wesentliches Werkzeug für Simulationen und statistische Modellierung. Während die Ablehnungsstichprobe oft als einfache Lösung dient, bringt sie Einschränkungen hinsichtlich der Leistung und des Speicherverbrauchs mit sich.
Eine elegante Alternative ergibt sich in Form der kumulativen Wahrscheinlichkeitsverteilung. Dieser Ansatz macht eine vorgefertigte Nachschlagetabelle überflüssig, was zu erheblichen Speichereinsparungen und einer konstanten Leistung bei der Auswahl von Werten führt. So funktioniert es in JavaScript:
function weightedRand(spec) { var sum = 0; for (var i in spec) { sum += spec[i]; } var r = Math.random() * sum; for (i in spec) { r -= spec[i]; if (r <= 0) return i; } }
Gewichtete Zufallszahlengeneratoren finden häufig Anwendungen in Szenarien wie:
In bestimmten Fällen, in denen die Gewichte gleichmäßig verteilt sind, erweist sich ein noch einfacherer Ansatz als effektiv: Wählen Sie einfach einen zufälligen Index aus einem Array aus, der die möglichen Werte darstellt. Diese Methode greift jedoch bei ungleichmäßigen Gewichtsverteilungen zu kurz.
Denken Sie daran, dass die Wahl der Implementierung von Faktoren wie der Anzahl der Optionen, der Gewichtsverteilung und den gewünschten Leistungsmerkmalen abhängt.
Das obige ist der detaillierte Inhalt vonSo generieren Sie gewichtete Zufallszahlen: Ist die kumulative Wahrscheinlichkeitsverteilung die Antwort?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!