產生加權隨機數:拒絕取樣的有效替代方案
雖然拒絕取樣是選擇具有加權機率的隨機數的簡單方法,它可能不是所有場景下最有效的解決方案。以下是兩種具有不同性能特徵的替代策略:
恆定時間查找表(透過高階函數)
這種方法涉及根據權重建立一個查找表規範並傳回一個從表中檢索值的函數。好處包括:
但是,此策略需要線性時間來建立對於大規格或小重量或精確重量的表,可能會消耗大量記憶體
迭代求和
在此策略中,會產生[0,1) 範圍內的隨機數,並與權重的累積和進行迭代比較。如果隨機數位於特定值的累積和之內,則傳回該值。這種方法的優點包括:
但是,這種方法可能比常數時間計算更密集
結論
方法的選擇取決於應用程式的特定要求。常數時間尋找適合對效能要求較高的場景,而迭代求和更適合規格較大或權值較小或精確的場景。
以上是哪一種方法最適合用來產生加權隨機數:找出表格還是迭代求和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!