首頁 > 資料庫 > mysql教程 > 如何使用SQL從加權表中隨機選擇一行?

如何使用SQL從加權表中隨機選擇一行?

Linda Hamilton
發布: 2024-12-23 06:34:47
原創
681 人瀏覽過

How Can I Randomly Select a Row from a Weighted Table with SQL?

具有加權機率的隨機行選擇

考慮一個包含 id、內容和權重等欄位的表格。您的目標是從該表中隨機選擇一行,同時考慮權重。

例如,給定包含以下資料的三行:

id, content, weight
1, "some content", 60
2, "other content", 40
3, "something", 100
登入後複製

機率分佈如下:

  • 第1 行:30%
  • 第1 行:30%
第1 行:30%

第2 行: 20%

第 3行:50%

SELECT
  id,
  -LOG(RAND()) / weight AS priority
FROM
  your_table
ORDER BY priority
LIMIT 1;
登入後複製

加權水庫採樣

實現此目的的最直接方法是透過加權水庫採樣:這個方法保證了M的合理選擇N 個元素的集合中的元素,其中選擇每個元素的機率與其權重成正比。即使只需要單一元素,它仍然有效。 所提供的文章中詳細描述了加權水庫採樣的基本原理。值得注意的是,它涉及選擇 -LOG(RAND()) / 權重的最小值,而不是文章中所述的 POW(RAND(), 1/權重) 的最大值。這會產生相同的結果。

以上是如何使用SQL從加權表中隨機選擇一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板