具有加權機率的隨機行選擇
考慮一個包含列id、內容和權重的表,任務是隨機選擇一行同時考慮到重量。在存在權重分別為60、40 和100 的三行的場景中,挑戰是計算選擇每一行的機率,如下所示:
加權水庫抽樣
這個問題的最佳方法是加權水庫抽樣,它可以有效地選擇機率與其權重成正比的項目。以下是如何應用它:
SELECT id, -LOG(RAND()) / weight AS priority FROM your_table ORDER BY priority LIMIT 1;
此SQL 查詢採用以下邏輯:
這種加權水庫採樣技術可用於選擇多行甚至整個表格具有加權機率,使其成為各種資料選擇場景的通用解決方案。
以上是如何使用 SQL 從表中以加權機率隨機選擇一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!