首先,這個演算法可以如下表述:
如果已知a類物件生成概率為p(a),b類物件生成概率為p(b),c類物件···,k類物件,他們的概率總和為1,問如何在a~k中隨機生成乙個物件
演算法理解如下:
即我們需要先對0~1區段按照概率大小劃分長度,設隨機生成乙個0~1之間的數,這種隨機數生成結果是在0~1均勻分布的,然後看其究竟落在哪個概率區段即為生成哪種物件
演算法**:
package test;import org.junit.test;
public class roulette ;//假設的概率分布
for(int i=0;i<100;i++)
}/**
* 輪盤賭函式
* @param p 各類物件概率分布
* @return 生成的物件類
*/private int roulette(double p){
double rand=math.random();
double pointer=0;//pointer指示每個區段的右邊界,從左往右掃瞄判斷
for(int i=0;i
原文:輪盤賭演算法
輪盤賭演算法
首先,這個演算法可以如下表述 如果已知a類物件生成概率為p a b類物件生成概率為p b c類物件 k類物件,他們的概率總和為1,問如何在a k中隨機生成乙個物件 演算法理解如下 即我們需要先對0 1區段按照概率大小劃分長度,設隨機生成乙個0 1之間的數,這種隨機數生成結果是在0 1均勻分布的,然後...
輪盤賭演算法
1.基本原理 群體中個體被選擇的概率與其適應度值成正比。設個體表示為 2.由輪盤 化示例 個體 1234 5適應度值24 6810個體被選擇的概率 按照上式計算 0.07 0.13 0.20.27 0.33 3.累積概率 補充上表個體1 2345 適應度值24 6810個體被選擇的概率 按照上式計算...
輪盤賭演算法JAVA實現
我在原文的基礎是修改了部分 public class main else flag2 flag2 multipros j system.out.println 隨機生成的數字所在的範圍在 flag2 flag1 system.out.println 隨機生成的數字為 num 1 返回隨機數所在概率累...