加權隨機演算法

2022-07-03 15:54:09 字數 1412 閱讀 6646

public

class

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...