演算法 權重隨機

2021-09-23 10:39:39 字數 2981 閱讀 9561

/// /// 權重物件

///

public class randomobject

/// /// id

///

public int id

}/// /// 四類寶箱中物品數量的權重(json格式資料):

/// [[1,101],[2,102],[31,103],[41,104]],

/// 寶箱中具體物品數量的權重(json格式資料):

/// [[1202,100],[1203,100],[1201,100],[1210,100]

/// ,[1204,101],[1205,101],[1206,102],[1208,102],

/// [1207,103],[1209,103]]

/// 物品所屬寶箱型別:

/// 1201 31

/// 1202 1

/// 1203 1

/// 1204 1

/// 1205 2

/// 1206 1

/// 1207 1

/// 1208 2

/// 1209 2

/// 1210 41

/// 說明:[1,101] 中 1表示寶箱id,

/// 101表示寶箱中物品總數量的權重。

/// [1202,100]中 1202表示寶箱中具體物品的id, -

/// ..-0

///

/// 現在有39個物品分布在4類寶箱中,

/// 出現的個數由寶箱權重與具體的物品權重來控制

/// 請寫出得到每個物品被分配個數的演算法

///

class program

//隨機賦值權重

//getrandomseed()隨機種子, 防止快速頻繁呼叫導致隨機一樣 的問題

//如果沒有引數 是根據時間

random ran = new random(getrandomseed());

//第乙個int為list下標索引、第二個int為權重排序值

//輕量級鍵值對集合(keyvaluepair)

list> wlist = new list>();

for (int i = 0; i < list.count; i++)

//排序

wlist.sort(

delegate (keyvaluepairkvp1, keyvaluepairkvp2)

);//隨機法則

return list[wlist[0].key];

}/// /// 隨機種子值

///

///

private static int getrandomseed()

static void main(string args)

);list.add(new randomobject );

list.add(new randomobject );

list.add(new randomobject );

listlistres = new list();

for (int i = 0; i < 39; i++)

listlist1 = new list();

list1.add(new randomobject );

list1.add(new randomobject );

list1.add(new randomobject );

list1.add(new randomobject );

list1.add(new randomobject );

listlistres1 = new list();

int count1 = listres.findall(m => m.id == 1).count;

for (int i = 0; i < count1; i++)

console.writeline("id為1的箱子放入的物品總數量為:" + listres1.count);

foreach (var item in listres1)

listlist2 = new list();

list2.add(new randomobject );

list2.add(new randomobject );

list2.add(new randomobject );

listlistres2 = new list();

int count2 = listres.findall(m => m.id == 2).count;

for (int i = 0; i < count2; i++)

console.writeline("id為2的箱子放入的物品總數量為:" + listres2.count);

foreach (var item in listres2)

listlist3 = new list();

list3.add(new randomobject );

listlistres3 = new list();

int count3 = listres.findall(m => m.id == 31).count;

for (int i = 0; i < count3; i++)

console.writeline("id為31的箱子放入的物品總數量為:" + listres3.count);

foreach (var item in listres3)

console.writeline("id為41的箱子放入的物品總數量為:" + (39 - listres1.count - listres2.count - listres3.count));

for (int i = 0; i < 39 - listres1.count - listres2.count - listres3.count; i++)

console.readkey();

}}

權重隨機演算法

主要用於計算 ip池設計,實現概率選擇優質 ip,所以簡單寫了個權重隨機演算法。如果量大注意int 超限,預設20次 支援107374182個ip。權重物件類 public class ipweight public void setaddress string address public int...

隨機物品權重演算法設計

1 前言 在遊戲開發中很多功能按權重隨機給東西,比如 掉落 獎勵 等等.2 功能 支援多個權重進行隨機 能遮蔽指定權重,防止再次隨機到 3 實現 public int weightrandom bitset exclude,int.weights int length weights.length ...

帶權重的隨機演算法

但是,對於這樣的問題,怎樣才能實現這樣的隨機效果呢?直接使用random函式,是不可能做到的。其實相信好多人都已經有實現的思路了,就是產生0 100之間的隨機數,當隨機數在0 70時,就獲得3等獎,70 90是2等獎,90 100是一等獎。一般情況下,這種隨機概率,是通過讀取 或檔案來獲取的,然後儲...