java - 关于java作业的帮助

标签 java random

我创建了一种方法来创建一些随机 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/

相关文章:

java - org.hibernate.MappingException : No Dialect mapping for JDBC type: -1 , 内部查询失败

java - 如何从使用自定义对象的树集中删除重复项

java - 像网络摄像头一样使用安卓手机

sqlite - webkit 中的 sqlite 是否支持 RANDOM() 函数?

matlab - 作为参数传递的函数不会计算多次 matlab

scala - 获取Scala中两个数字之间的随机数

python - 如何在 Python 中将一组字符串拆分为子字符串,使更短的子字符串更有可能?

java - 用于测试 java gitlab CI/CD 的所有单元测试的命令

java - 从 Java 集合中删除对象

random - 如何在 Julia 中生成一系列随机 float ?