加權隨機演算法

2021-10-10 06:12:06 字數 508 閱讀 9731

本文參考:

加權平均演算法一般應用於某個場景,有乙個集合s,裡面有a,b,c,d這四項。這時我們想隨機從中抽取一項,但是抽取的概率不同。比如我們希望抽到a的概率是50%,抽到b和c的概率是20%,d的概率是10%。一般來說,我們可以給各項附乙個權重,抽取的概率正比於這個權重。那麼上述集合就成了

方法一:

然後就可以用均勻隨機演算法從中選取。

好處:選取的時間複雜度為o(1),演算法簡單。

壞處:空間占用極大。另外如果權重數字位數較大,例如 和 

前者遍歷步數的期望是5/10*1+2/10*2+2/10*3+1/10*4  而 2/10*1+2/10*2+5/10*3+1/10*4.

好處:提高了平均選取速度。

壞處:需要進行排序,並且不易新增刪除修改項。

方法二核心**:

static int getitem(listlist, random random)

return 0;

}

加權隨機演算法

public class weightedrandom 計算權重總和 int totalweights 0 for int i 0 i list.count i 隨機賦值權重 system.random ran new system.random getrandomseed getrandomsee...

加權輪詢和加權隨機演算法

今天在看 大型分布式 架構設計與實踐 一書中,看到了一種比較簡單的加權的演算法,在這裡記下來 var serverweightmap new dictionary serverweightmap.add 192.168.1.100 1 serverweightmap.add 192.168.1.10...

負載均衡,隨機加權重演算法實現

例如輸入資料 a 3 b 3 c 9 d 1 權重分別為3,3,9,1 具體演算法是將3,3,9,1 對映到一維座標中,0 3 6 15 16,取得乙個隨機數,範圍是0,16,看結果落在哪個區間就返回哪個數值 已下以python 為例子 import random import collection...