MySQL 中的加權隨機選擇
使用者試圖從 MySQL 表中擷取根據「乘數」欄位加權的隨機條目。乘數為 0 表示不加權,而較高的值會增加選擇的可能性。
使用 SELECT 和 RAND() 的原始查詢缺乏實現加權的能力。為了克服這一限制,已經確定了一種替代方法:
ORDER BY -LOG(1.0 - RAND()) / Multiplier
此公式有效地將更高的隨機值分配給具有更高乘數的條目。需要注意的是,乘數不能設定為 0,因為這會導致除以零的錯誤。要排除乘數為0 的條目,可以應用WHERE 子句:
WHERE Multiplier > 0
透過組合這些元素,以下查詢實現加權隨機選擇:
SELECT * FROM table WHERE Multiplier > 0 ORDER BY -LOG(1.0 - RAND()) / Multiplier LIMIT 1
此公式確保乘數越高的條目被選擇的機會越大,同時保持隨機選擇過程的完整性。
以上是MySQL中如何實現加權隨機選擇?的詳細內容。更多資訊請關注PHP中文網其他相關文章!