MySQL 從表中選擇隨機加權條目
當前的任務涉及從MySQL 表中選擇隨機條目,但有一點不同— 根據「乘數」列中的數值對條目進行加權。乘數 0 表示不加權,1 表示權重加倍,2 表示權重增加三倍,依此類推。
使用 ORDER BY 進行加權隨機選擇
儘管使用 SELECT 和 RAND ()是隨機選擇的常用方法,它不考慮權重。然而,透過利用 ORDER BY,可以實現所需的加權隨機性。
所使用的公式 -LOG(1.0 - RAND()) / Multiplier 可產生加權隨機性。隨著Multiplier的增加,表達式的值減小,有效增加隨機過程中條目的權重。
注意事項和最佳化
需要注意的是,設定乘數為 0 以停用條目可能會導致除以零錯誤。為了避免此問題,建議使用 WHERE 子句過濾掉 Multiplier 為 0 的條目,例如 WHERE Multiplier > 0.
以上是如何從 MySQL 表中選擇加權隨機條目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!