You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:24:03