產生加權隨機數
簡介
在各種應用中,經常需要從應用中,經常需要從在一組選項中選擇一個隨機數,其中每個選項都被分配了一個特定的被選擇機率。這個概念稱為產生加權隨機數。
拒絕取樣方法
產生加權隨機數的一種方法是透過拒絕取樣。這種方法涉及建立一個查找表,其中每個選項出現的次數與其指定的權重一樣多。例如,如果選項 A 有 80% 的機率,它會在查找表中出現 80 次。要產生隨機數,需要在表中選擇一個隨機位置,並傳回對應的選項。
拒絕採樣的優點和缺點
拒絕採樣提供常數- 構建查找表後選擇隨機數的時間性能。然而,它需要線性演算法性能來建立表格,這對於大量選項或具有高精度權重的選項可能會出現問題。
迭代權重求和方法
另一種方法是迭代權重求和。這裡,在 [0,1) 範圍內產生一個隨機數,並將其與權重的累積和進行比較。與超過隨機數的權重相關的選項被選為加權隨機數。
迭代權重求和的優缺點
與拒絕採樣相比,迭代權重求和沒有前期成本,但具有與集合中選項數量相關的線性平均算法性能。它也假設權重總和為 1。
實現注意事項
實現這些方法時,建議建立一個採用權重規範的高階函數並傳回一個產生加權隨機數的函數。這允許可重複使用性,並避免建立查找表或多次累加權重的開銷。
以上是如何產生加權隨機數:拒絕採樣與迭代權重求和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!