Heim > Artikel > Backend-Entwicklung > Wie kann ich einen gewichteten Zufallseintrag in MySQL auswählen?
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!