Java 三个浮点数的概率

Java 三个浮点数的概率,java,Java,如何在代码中实现这一点我正在接受用户输入的三个独立浮点数,它们必须加在一个浮点数上(即:333333、.333333333、.333333333)。这些数字是随机选取一个数字(-1,0,1)的概率 if(new Random().nextDouble()三个浮点数加起来正好等于1.0的可能性非常低,因为许多(大多数)实数不能精确地表示为浮点数。您最好输入两个数字并计算第三个数字,这将保证它们加起来等于1.0。公共静态void main(String[]args){ public static v

如何在代码中实现这一点我正在接受用户输入的三个独立浮点数,它们必须加在一个浮点数上(即:333333、.333333333、.333333333)。这些数字是随机选取一个数字(-1,0,1)的概率


if(new Random().nextDouble()三个浮点数加起来正好等于1.0的可能性非常低,因为许多(大多数)实数不能精确地表示为浮点数。您最好输入两个数字并计算第三个数字,这将保证它们加起来等于1.0。

公共静态void main(String[]args){
public static void main(String[] args) {
    double[] probs = readProbabilities();
    double random = new Random().nextDouble();
    int randomNumber;
    if (random <= probs[0]) {
        randomNumber = -1;
    } else if (random <= (probs[0] + probs[1])) {
        randomNumber = 0;
    } else {
        randomNumber = 1;
    }
    System.out.println("Random Number is " + randomNumber);
}

public static double[] readProbabilities() {
    Scanner sc = new Scanner(System.in);
    double first, second, third;
    System.out.print("Please insert 1st probability: ");
    first = sc.nextDouble();
    while (first < 0.0 || first > 1.0) {
        System.out.print("Must be between 0.0 and 1.0, try again: ");
        first = sc.nextDouble();
    }
    System.out.print("Please insert 2nd probability: ");
    second = sc.nextDouble();
    while (second < 0.0 || (first + second) > 1.0 ) {
        System.out.print("Must be between 0.0 and " + (1.0 - first) + ":");
        second = sc.nextDouble();
    }
    third = 1.0 - (first + second);
    System.out.println("3rd Possibility is " + third);
    return new double[] {first, second, third};
}
double[]probs=readProbabilities(); 双随机=新随机().nextDouble(); 整数随机数; if(随机1.0){ System.out.print(“必须介于0.0和“+(1.0-第一个)+”:”; 第二个=sc.nextDouble(); } 第三个=1.0-(第一个+第二个); System.out.println(“第三种可能性是”+third); 返回新的double[]{first,second,third}; }

问题?

请多解释一下你的问题。