轮盘赌算法JAVA实现

 原文链接:

https://blog.csdn.net/qy20115549/article/details/79635945

我在原文的基础是修改了部分代码。

public class Main {
    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++) {
            double[] num = new double[5];
            num = nextDisrete(multiPros);
            if (num[0] == 0) {
                System.out.println("随机生成的数字所在的范围在:0" + "————" + multiPros[0]);
            } else {
                double flag1 = 0.0;
                double flag2 = 0.0;
                int j = 0;
                for (; j <= num[0]; j++) {
                    flag1 = flag1 + multiPros[j];
                    if (j == num[0]) {
                        break;
                    }
                    flag2 = flag2 + multiPros[j];
                }
                System.out.println("随机生成的数字所在的范围在:" + flag2 + "————" + flag1);
            }

            System.out.println("随机生成的数字为:" + num[1]);
        }


    }

    /**
     * 返回随机数所在概率累加的范围和随机数值
     * @param probs
     * @return
     */
    public static double[] nextDisrete(double[] probs) {
        double[] num = new double[4];
        double r = Math.random() * 1;
        double sum = 0.0;
        for (int i = 0; i < probs.length; i++) {
            sum += probs[i];
            if (sum > r) {
                num[0] = i;
                num[1] = r;
                return num;
            }

        }
        num[0] = probs.length - 1;
        return num;
    }

}

猜你喜欢

转载自blog.csdn.net/sinat_34774688/article/details/85009500