Heim > Datenbank > MySQL-Tutorial > Wie wähle ich eine gewichtete Zufallszeile in MySQL aus?

Wie wähle ich eine gewichtete Zufallszeile in MySQL aus?

Barbara Streisand
Freigeben: 2024-12-05 00:13:15
Original
388 Leute haben es durchsucht

How to Select a Weighted Random Row in MySQL?

Zufällige Auswahl mit gewichteten Ergebnissen in MySQL

Bei diesem Problem geht es um die Auswahl eines zufälligen Eintrags aus einer MySQL-Tabelle, in der Zeilen basierend auf einem „gewichtet“ werden. Spalte „Multiplikator“. Herkömmliche Ansätze mit RAND() berücksichtigen diese Gewichtung nicht.

Um dieses Problem zu beheben, schlug ein Benutzer einen Ansatz mit ORDER BY -LOG(1.0 - RAND()) / Multiplikator vor. Diese Formel passt den Randomisierungsprozess effektiv an, um gewichteten Zeilen eine höhere Auswahlwahrscheinlichkeit zu geben.

Die Formel berechnet einen Wert, der die „Zufälligkeit“ für jede Zeile darstellt, wobei ein niedrigerer Wert eine höhere Wahrscheinlichkeit angibt. Durch Division dieses Werts durch den „Multiplikator“ erhalten Zeilen mit einem höheren Multiplikator effektiv eine geringere „Zufälligkeit“ und damit eine höhere Chance, ausgewählt zu werden.

Der Nachteil dieser Methode besteht darin, dass sie nicht deaktiviert werden kann eine Zeile, indem Sie den Multiplikator auf 0 setzen, da dies zu einer Division durch Null führen würde. Diese Einschränkung kann jedoch umgangen werden, indem die Zeilen mit WHERE Multiplier > gefiltert werden. 0, um diejenigen mit einem Multiplikator von Null auszuschließen.

Das obige ist der detaillierte Inhalt vonWie wähle ich eine gewichtete Zufallszeile in MySQL aus?. 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