本文參考:
加權平均演算法一般應用於某個場景,有乙個集合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...