轮盘赌介绍
算法实现
package test;
public class Test {
public static double[] multiPros;
public static void main(String[] args) {
multiPros = new double[4];
multiPros[0] = 0.14;
multiPros[1] = 0.49;
multiPros[2] = 0.06;
multiPros[3] = 0.31;
for (int i = 0; i < 10; i++) {
int k = nextDiscrete(multiPros);
System.out.println(k);
}
}
public static int nextDiscrete(double[] probs)
{
double sum = 0.0;
for (int i = 0; i < probs.length; i++)
sum += probs[i];
double r = Math.random() * sum;
sum = 0.0;
for (int i = 0; i < probs.length; i++) {
sum += probs[i];
if (sum > r)
return i;
}
return probs.length - 1;
}
}
结果展示