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:
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;
Diese SQL-Abfrage verwendet die folgende Logik:
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!