Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gewichtet man zufällige Auswahlen in MySQL?

Wie gewichtet man zufällige Auswahlen in MySQL?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-17 13:30:02482Durchsuche

How to Weight Random Selections in MySQL?

Gewichtung zufälliger Auswahlen in MySQL

Bei der Arbeit mit großen Datensätzen kann es notwendig sein, einen Eintrag zufällig auszuwählen und dabei die damit verbundene Gewichtung zu berücksichtigen mit jedem Eintrag. In MySQL kann dies durch die Verwendung einer Kombination aus Funktionen und Gewichtungsmultiplikatoren erreicht werden.

Um einen einzelnen Eintrag aus einer Tabelle auszuwählen, verwenden Sie die SELECT-Anweisung. Um die Auswahl zu randomisieren, verwenden Sie die Funktion RAND(). Um jedoch eine Gewichtung einzuführen, ist ein zusätzlicher Schritt erforderlich.

Stellen Sie sich eine Tabelle mit Einträgen und einer Spalte „Multiplikator“ vor, die deren Gewichtungen darstellt. Um die Auswahl auf Einträge mit höheren Multiplikatoren zu gewichten, ändern Sie die Anweisung mit der folgenden Syntax:

SELECT *
FROM table_name
ORDER BY -LOG(1.0 - RAND()) / Multiplier
LIMIT 1;

In diesem Ausdruck sortiert die ORDER BY-Klausel die Ergebnisse in aufsteigender Reihenfolge des berechneten Werts. Der Wert wird ermittelt, indem der negative Logarithmus einer Zufallszahl zwischen 0 und 1 durch den Multiplikator dividiert wird. Einträge mit höheren Multiplikatoren haben kleinere berechnete Werte und erscheinen früher in der sortierten Liste. Die LIMIT 1-Klausel wählt dann den obersten Eintrag als gewichtete Zufallsauswahl aus.

Beachten Sie, dass diese Methode nicht von Multiplikatorwerten von 0 beeinflusst wird, da ein Multiplikator von Null immer noch dazu führt, dass der Eintrag am Ende erscheint sortierte Liste. Auf Wunsch können Einträge mit einem Multiplikator von 0 über eine WHERE-Klausel von der Auswahl ausgeschlossen werden:

SELECT *
FROM table_name
WHERE Multiplier > 0
ORDER BY -LOG(1.0 - RAND()) / Multiplier
LIMIT 1;

Das obige ist der detaillierte Inhalt vonWie gewichtet man zufällige Auswahlen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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