我创建了一种方法来创建一些随机 double 值,例如 10 个值:num1、num2、...num10,这 10 个值的总和为 1:num1+num2+...+num10 = 1
我的方法和论坛里的方法一样
Getting N random numbers that the sum is M :
private static double[] randSum(int n, double m) {
Random rand = new Random();
double randNums[] = new double[n], sum = 0;
for (int i = 0; i < randNums.length; i++) {
randNums[i] = rand.nextDouble();
sum += randNums[i];
}
for (int i = 0; i < randNums.length; i++) {
randNums[i] /= sum * m;
}
return randNums;
}
但是这个方法会创建很长的数字,例如:0.18593711849349975 我什至使用了 Math.round() 方法,但使用这种方法我的数字是 0.0, 0.5, 0.0 , ... 我需要 0.01 到 0.99 或 0.1 到 0.9 之间的数字。如果我使用整数,我可以使用 Random.nextInt(0.98) +0.01 之类的方法来完成此操作,但 nextDouble() 方法不接受参数,我该怎么做?你能帮我一下吗?谢谢
最佳答案
您可以通过 nextInt 生成整数,然后除以所需的 10 次方。
关于java - 关于java作业的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4408781/