Heim >Backend-Entwicklung >Python-Tutorial >Wie führt man eine effiziente gewichtete Zufallsauswahl mit und ohne Ersatz durch?
Gewichtete Zufallsauswahl mit und ohne Ersatz
Als Reaktion auf eine Programmierherausforderung suchen wir nach effizienten Algorithmen für die gewichtete Zufallsauswahl aus einer Liste. sowohl mit als auch ohne Ersetzung.
Gewichtete Auswahl mit Ersetzung
Eine effektive Methode zur gewichteten Auswahl mit Ersetzung ist die Alias-Methode. Diese Technik erstellt für jedes gewichtete Element einen Satz gleich großer Bins. Durch die Verwendung von Bitoperationen können wir diese Bins effizient indizieren, ohne auf die binäre Suche zurückgreifen zu müssen. In jedem Bin wird ein einzelner Prozentsatz gespeichert, der die Grenze zwischen den ursprünglich gewichteten Elementen darstellt.
Betrachten Sie das Beispiel von fünf Elementen mit gleichen Gewichten: (a, b, c, d, e).
Implementierung der Alias-Methode
Wiederholen Sie die folgenden Schritte, bis alle Gewichte verteilt sind:
Für unser Beispiel haben wir nach mehreren Iterationen die folgende Partition:
Laufzeitauswahl
Gewichtete Auswahl ohne Ersatz
While-Algorithmen So wie es die Methode des gewichteten Reservoirs für eine ungewichtete Auswahl ohne Ersatz gibt, bleibt dieses Problem ungelöst.
Das obige ist der detaillierte Inhalt vonWie führt man eine effiziente gewichtete Zufallsauswahl mit und ohne Ersatz durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!