Heim > Datenbank > MySQL-Tutorial > Wie kann ich mithilfe von SQL zufällig eine Zeile aus einer Tabelle mit gewichteter Wahrscheinlichkeit auswählen?

Wie kann ich mithilfe von SQL zufällig eine Zeile aus einer Tabelle mit gewichteter Wahrscheinlichkeit auswählen?

Linda Hamilton
Freigeben: 2024-12-26 06:55:15
Original
494 Leute haben es durchsucht

How Can I Randomly Select a Row from a Table with Weighted Probability Using SQL?

Zufällige Zeilenauswahl mit gewichteter Wahrscheinlichkeit

Bei der Betrachtung einer Tabelle mit Spalten-ID, Inhalt und Gewichtung besteht die Aufgabe darin, eine Zeile zufällig auszuwählen unter Berücksichtigung des Gewichts. In einem Szenario, in dem drei Zeilen mit den Gewichtungen 60, 40 bzw. 100 vorhanden sind, besteht die Herausforderung darin, die Wahrscheinlichkeit der Auswahl jeder Zeile wie folgt zu berechnen:

  • Zeile 1: 30 % Chance
  • Zeile 2: 20 % Chance
  • Zeile 3: 50 % Chance

Gewichtete Reservoir-Stichprobe

Der optimale Ansatz für dieses Problem ist die gewichtete Reservoir-Stichprobe, mit der Elemente effektiv ausgewählt werden können, deren Wahrscheinlichkeiten proportional zu ihren Gewichten sind. So wenden Sie es an:

SELECT
  id,
  -LOG(RAND()) / weight AS priority
FROM
  your_table
ORDER BY priority
LIMIT 1;
Nach dem Login kopieren

Diese SQL-Abfrage verwendet die folgende Logik:

  • Sie ordnet jede Zeile ihrer Priorität zu, die als negativer Logarithmus einer geteilten Zufallszahl berechnet wird nach der Gewichtung der Zeile.
  • Das Sortieren der Zeilen nach Priorität stellt sicher, dass Zeilen mit höherer Gewichtung eine größere Chance haben, oben in der Zeile zu erscheinen Ergebnismenge.
  • Die Beschränkung des Ergebnisses auf eine einzelne Zeile ergibt die zufällig ausgewählte Zeile mit gewichteter Wahrscheinlichkeit.

Diese gewichtete Reservoir-Stichprobentechnik kann verwendet werden, um mehrere Zeilen oder sogar die gesamte auszuwählen Tabelle mit gewichteten Wahrscheinlichkeiten, was sie zu einer vielseitigen Lösung für verschiedene Datenauswahlszenarien macht.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von SQL zufällig eine Zeile aus einer Tabelle mit gewichteter Wahrscheinlichkeit auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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