Was ist ein geeigneter Ansatz für die gewichtete Zufallsauswahl mit Ersetzung?

Patricia Arquette
Freigeben: 2024-10-24 10:15:29
Original
734 Leute haben es durchsucht

What is a Suitable Approach for Weighted Random Selection With Replacement?

Gewichtete Zufallsauswahl: Ersetzungsbeschränkungen überwinden

In letzter Zeit standen viele Entwickler vor der Herausforderung, Elemente aus einer Liste gewichtet zufällig auszuwählen mit und ohne Ersatz. Während es wirksame Algorithmen für die ungewichtete Auswahl und die gewichtete Auswahl ohne Ersatz gibt, hat es sich als schwierig erwiesen, eine geeignete Lösung für die gewichtete Auswahl mit Ersatz zu finden.

Ein innovativer Ansatz, der Effizienz und Einfachheit erreicht, ist die Alias-Methode. Es funktioniert, indem es gleich große Bins für die gewichtete Liste erstellt. Diese Bins werden mithilfe von Bitoperationen effizient indiziert, wodurch zeitaufwändige binäre Suchvorgänge vermieden werden.

So bilden Sie die Alias-Nachschlagetabelle:

  1. Normalisieren Sie die Gewichte so, dass sie sich auf 1,0 summieren (z. B. von (1 , 1, 1, 1, 1) bis (0,2, 0,2, 0,2, 0,2, 0,2)).
  2. Bestimmen Sie die kleinste Potenz von 2, die größer oder gleich der Anzahl der Variablen ist, und erstellen Sie diese Anzahl an Partitionen . In unserem Beispiel mit fünf Auswahlmöglichkeiten würden wir acht Partitionen erstellen.
  3. Weisen Sie das geringste verbleibende Gewicht einer leeren Partition zu (z. B. erhält Partition 1 das Gewicht 0,075).
  4. Wenn die Partition nicht voll ist , weisen Sie ihm auch das größte Gewicht zu (z. B. hat Partition 2 jetzt die Gewichte 0,075 und 0,15).

Wiederholen Sie die Schritte 3 und 4, bis das gesamte ursprüngliche Gewicht zugewiesen ist.

Während Laufzeit:

  1. Generieren Sie eine Zufallszahl im Bereich [0, 1] (z. B. 0,001100000).
  2. Verschieben Sie die Zufallszahl um log2(num_partitions), um die relevante Partition zu finden ( 001.1 wird z. B. der Partition 2 zugeordnet.
  3. Wenn die Partition geteilt ist, verwenden Sie den Dezimalteil der verschobenen Zufallszahl, um über die Aufteilung zu entscheiden.

Diese Methode verarbeitet effektiv gewichtete Zufälle Auswahl mit Ersetzung, was eine erhebliche Leistungssteigerung im Vergleich zu Reservoir-basierten Ansätzen bietet, insbesondere bei der Auswahl eines großen Teils einer Liste.

Das obige ist der detaillierte Inhalt vonWas ist ein geeigneter Ansatz für die gewichtete Zufallsauswahl mit Ersetzung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!