權重隨機演算法

2021-08-21 01:57:32 字數 1666 閱讀 5134

主要用於計算**ip池設計,實現概率選擇優質**ip,所以簡單寫了個權重隨機演算法。

如果量大注意int 超限,預設20次 支援107374182個ip。

權重物件類

public class ipweight 

public void setaddress(string address)

public int getweight()

public void setweight(int weight)

public ipweight(string address)

public ipweight(string address, int weight)

public void reduce()

public void reduce(int n)

@override

public string tostring()

/**

* set去重,重新如下兩個方法hashcode、equals

*/

@override

public int hashcode()

@override

public boolean equals(object obj)

return super.equals(obj);

}

演算法實現類

/**

* 權重隨機演算法

* set [a,10] [b,10] [a,11]

* ↓ ↓

* [a,10] [b,10]

* ↓ ↓

* [a,10] [b,20]

* a[0,10) b[10,20)

* shoot[0,20)

* ↓ ↓

* get a or b

*/public class iptest

// system.out.println(result2.tostring());

// 隨機數

random r = new random();

int shoot = r.nextint(result2.get(result2.size() - 1).getweight());

// shoot=87;

// shoot=shoot2;

system.out.println(shoot);

// 遍歷 計算隨機數所在的區域

for (int j = 0; j < result2.size(); j++) else if (result2.get(j).getweight() > shoot && j == 0) }}

} else

long e = system.currenttimemillis();

system.out.println("time:" + (e - s));

} public static void main(string args)

/* //驗證是否去重

iteratorit=set.iterator();

while (it.hasnext()) */

weightedrandomalgorithm(set);

}}

經測試千個以內耗時0.002s

演算法 權重隨機

權重物件 public class randomobject id public int id 四類寶箱中物品數量的權重 json格式資料 1,101 2,102 31,103 41,104 寶箱中具體物品數量的權重 json格式資料 1202,100 1203,100 1201,100 1210,...

隨機物品權重演算法設計

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是一等獎。一般情況下,這種隨機概率,是通過讀取 或檔案來獲取的,然後儲...