Java中java.util.Random的nextDouble()传double参数报错如何解决
报错根因
java.util.Random类的nextDouble()没有支持传入double类型参数的重载,该方法默认仅返回**[0.0, 1.0)区间的随机double值**,传入range参数会触发参数类型/数量不匹配的编译错误。
修复代码
直接修改Matrix类的aryInit方法内的赋值逻辑即可,通过乘法将随机值区间放大到[0.0, range),完全满足你的需求:
public void aryInit(double range) { Random r = new Random(); for (int i = 0; i < ary.length; i++) { for (int j = 0; j < ary[i].length; j++) { // 移除nextDouble的入参,将生成的0~1随机值乘以范围得到目标区间的随机数 ary[i][j] = r.nextDouble() * range; } } }
补充说明
如果你的项目运行在JDK 17及以上版本,也可以使用新增的RandomGenerator接口,它原生支持传入上限参数生成指定范围的double值:
// 先导入对应包 import java.util.random.RandomGenerator; public void aryInit(double range) { RandomGenerator r = RandomGenerator.getDefault(); for (int i = 0; i < ary.length; i++) { for (int j = 0; j < ary[i].length; j++) { ary[i][j] = r.nextDouble(range); } } }
以上两种方案都可以生成0到输入最大值之间的随机double值,修改后即可正常编译运行。
内容的提问来源于stack exchange,提问作者lim
相关产品推荐
相关产品推荐

