Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich einen gewichteten Zufallseintrag in MySQL auswählen?

Wie kann ich einen gewichteten Zufallseintrag in MySQL auswählen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-23 13:49:10188Durchsuche

How Can I Select a Weighted Random Entry in MySQL?

MySQL: Gewichtete zufällige Eintragsauswahl

Problem:

Ihre MySQL-Tabelle enthält eine Spalte „Multiplikator“, die Gewichtungen zuweist zu Einträgen. Die Aufgabe besteht darin, unter Berücksichtigung dieser Gewichtungen einen zufälligen Eintrag auszuwählen.

Lösung:

Während RAND() bei der Auswahl eines zufälligen Eintrags helfen kann, erfordert die Gewichtung der Auswahl eine Innovation Ansatz. Die Antwort liegt in der Änderung des Tabellenaufbaus, um eine ausgewogene Gewichtung sicherzustellen.

Experten zufolge erreicht eine Abfrage mit ORDER BY -LOG(1.0 - RAND()) / Multiplikator effektiv die gewichtete Auswahl. Obwohl die mathematische Begründung dieser Formel nicht sofort ersichtlich ist, wurde empirisch nachgewiesen, dass sie genaue Ergebnisse liefert.

Dieser Ansatz stößt jedoch auf eine Einschränkung. Wenn Sie einem Eintrag eine Gewichtung von 0 zuweisen, um ihn zu deaktivieren, würde dies zu einer Division durch Null führen. Um dieses Problem zu umgehen, könnten Sie eine WHERE-Klausel verwenden, um Einträge mit einem Multiplikator größer als 0 herauszufiltern.

Das obige ist der detaillierte Inhalt vonWie kann ich einen gewichteten Zufallseintrag in MySQL auswählen?. 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