首頁  >  文章  >  web前端  >  如何產生加權隨機數:累積機率分佈是答案嗎?

如何產生加權隨機數:累積機率分佈是答案嗎?

Linda Hamilton
Linda Hamilton原創
2024-11-11 04:09:03899瀏覽

How to Generate Weighted Random Numbers: Is Cumulative Probability Distribution the Answer?

產生加權隨機數:超越拒絕取樣

在機率領域,加權隨機數的產生是一個重要的工具模擬和統計建模。雖然拒絕採樣通常是一種簡單的解決方案,但它在效能和記憶體消耗方面有其限制。

一種優雅的替代方案以累積機率分佈的形式出現。這種方法消除了對預先建立的查找表的需要,從而在選擇值時顯著節省記憶體並提高恆定時間效能。以下是它在 JavaScript中的工作原理:

function weightedRand(spec) {
  var sum = 0;
  for (var i in spec) {
    sum += spec[i];
  }
  var r = Math.random() * sum;
  for (i in spec) {
    r -= spec[i];
    if (r <= 0) return i;
  }
}

加權隨機數產生器通常在以下場景中找到應用:

  • 機率事件的模擬
  • 項目選擇從具有不同機率的庫存
  • 產生符合非均勻分佈的真實資料集

在權重均勻分佈的特定情況下,一種更簡單的方法被證明是有效的:只需從代表可能值的數組中選擇一個隨機索引即可。然而,這種方法在權重分佈不均勻方面存在不足。

請記住,實現的選擇取決於選項數量、權重分佈和所需性能特徵等因素。

以上是如何產生加權隨機數:累積機率分佈是答案嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn