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!