產生加權隨機數:超越拒絕取樣
在機率領域,加權隨機數的產生是一個重要的工具模擬和統計建模。雖然拒絕採樣通常是一種簡單的解決方案,但它在效能和記憶體消耗方面有其限制。
一種優雅的替代方案以累積機率分佈的形式出現。這種方法消除了對預先建立的查找表的需要,從而在選擇值時顯著節省記憶體並提高恆定時間效能。以下是它在 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中文網其他相關文章!