publicclass
weightedrandom
//計算權重總和
int totalweights = 0
;
for (int i = 0; i < list.count; i++)
//隨機賦值權重
system.random ran = new system.random(getrandomseed()); //
getrandomseed()隨機種子,防止快速頻繁呼叫導致隨機一樣的問題
listint, int>> wlist = new listint, int>>(); //
第乙個int為list下標索引、第乙個int為權重排序值
for (int i = 0; i < list.count; i++)
//排序
wlist.sort(
delegate (keyvaluepair kvp1, keyvaluepairkvp2)
);//根據實際情況取排在最前面的幾個
listnewlist = new list();
for (int i = 0; i < count; i++)
//隨機法則
return newlist[0
]; }
//////
隨機種子值
/// ///
private
static
intgetrandomseed()
}public
class
randomobject
}public
class
gameitemrandomobject : randomobject
}static
void
test6()
);shuidiranobj.add(
new gameitemrandomobject() );
shuidiranobj.add(
new gameitemrandomobject() );
shuidiranobj.add(
new gameitemrandomobject() );
shuidiranobj.add(
new gameitemrandomobject() );
shuidiranobj.add(
new gameitemrandomobject() );
shuidiranobj.add(
new gameitemrandomobject() );
var curitem = weightedrandom.getrandomlist(shuidiranobj, 1
); }
加權隨機演算法
本文參考 加權平均演算法一般應用於某個場景,有乙個集合s,裡面有a,b,c,d這四項。這時我們想隨機從中抽取一項,但是抽取的概率不同。比如我們希望抽到a的概率是50 抽到b和c的概率是20 d的概率是10 一般來說,我們可以給各項附乙個權重,抽取的概率正比於這個權重。那麼上述集合就成了 方法一 然後...
加權輪詢和加權隨機演算法
今天在看 大型分布式 架構設計與實踐 一書中,看到了一種比較簡單的加權的演算法,在這裡記下來 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...