我該如何實現這個代碼我需要三個單獨的浮點數的用戶輸入,這些浮點數必須加一(即.333333,.333333,.333333)這些數字是數字的概率(-1,0,1)隨機挑選。三個浮點數的概率
if(new Random().nextDouble() <= 0.333334){array[i]=randomNumber(-1,0,1)
?
或者沿着這些線?
我該如何實現這個代碼我需要三個單獨的浮點數的用戶輸入,這些浮點數必須加一(即.333333,.333333,.333333)這些數字是數字的概率(-1,0,1)隨機挑選。三個浮點數的概率
if(new Random().nextDouble() <= 0.333334){array[i]=randomNumber(-1,0,1)
?
或者沿着這些線?
由於很多(大多數)實數不能完全表示爲浮點數,所以三個浮點數將會加到的準確性爲 1.0的可能性非常低。你可以做的最好的是輸入兩個數字並計算第三個數字,這可以保證它們總計爲1.0。
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};
}
有問題?
請注意。多解釋一下你的問題。 – Azodious