我创建了一种方法来创建一些随机双精度值,例如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的幂。

07-25 20:37