Erzeugen Sie eine gewichtete Zufallszahl: Effiziente Alternativen zur Ablehnungsstichprobe
Während die Ablehnungsstichprobe ein unkomplizierter Ansatz zur Auswahl einer Zufallszahl mit gewichteten Wahrscheinlichkeiten ist , ist es möglicherweise nicht in allen Szenarien die effizienteste Lösung. Hier sind zwei alternative Strategien mit unterschiedlichen Leistungsmerkmalen:
Konstantzeit-Nachschlagetabelle (über eine Funktion höherer Ordnung)
Dieser Ansatz beinhaltet die Erstellung einer Nachschlagetabelle aus der Gewichtung Spezifikation und Rückgabe einer Funktion, die Werte aus der Tabelle abruft. Zu den Vorteilen gehören:
Diese Strategie erfordert jedoch lineare Zeit zum Aufbau die Tabelle und kann bei großen Spezifikationen oder Gewichtungen mit kleinen oder präzisen Werten viel Speicher verbrauchen.
Iterative Summation
Bei dieser Strategie wird eine Zufallszahl innerhalb des Bereichs generiert [0,1) und iterativ mit der kumulativen Summe der Gewichte verglichen. Wenn die Zufallszahl innerhalb der kumulativen Summe für einen bestimmten Wert liegt, wird dieser Wert zurückgegeben. Zu den Vorteilen dieses Ansatzes gehören:
Dieser Ansatz ist jedoch unterschiedlich ist möglicherweise rechenintensiver als die zeitkonstante Suche.
Schlussfolgerung
Die Wahl des Ansatzes hängt von den spezifischen Anforderungen der Anwendung ab. Die zeitkonstante Suche ist ideal für leistungskritische Szenarien, während die iterative Summierung eher für Szenarien mit großen Spezifikationen oder Gewichtungen mit kleinen oder präzisen Werten geeignet ist.
Das obige ist der detaillierte Inhalt vonWelcher Ansatz eignet sich am besten zum Generieren einer gewichteten Zufallszahl: Nachschlagetabelle oder iterative Summierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!