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

JavaScript编写自定义区间随机数生成器运行异常求助

随机数生成器代码问题排查与修复

现存问题

  • prompt返回值为字符串类型,未转换为数值直接参与运算,存在隐式转换异常风险
  • 第二个输入框提示文案错误,仍显示为输入最大值的提示,用户无法知晓要输入最小值
  • 自定义函数getRandomInt传入的max参数完全未被使用,函数逻辑与参数脱节
  • 随机数生成公式错误:
    1. 未叠加最小值作为偏移量,生成的结果不会落在设定的最小值和最大值区间内
    2. 未给区间长度补1,会导致永远无法取到设定的最大值
  • 无输入合法性校验,若用户输入非数字、最小值大于最大值、超出设定阈值的内容时,程序会异常输出

修复后完整代码

// 主动将输入转换为数值类型
let highNumber = Number(prompt("请输入最大数值\n上限为10000"));
let lowNumber = Number(prompt("请输入最小数值\n上限为9998"));

// 输入合法性校验
if (isNaN(highNumber) || isNaN(lowNumber)) {
  alert("请输入合法数字");
} else if (lowNumber >= highNumber) {
  alert("最小数值必须小于最大数值");
} else if (highNumber > 10000 || lowNumber > 9998) {
  alert("输入数值超出设定上限");
} else {
  function getRandomInt(min, max) {
    // 正确的包含上下限的随机整数公式
    return Math.floor(Math.random() * (max - min + 1)) + min;
  }
  alert(getRandomInt(lowNumber, highNumber));
}

修改说明

  • 新增输入值类型转换,统一转为数值类型避免运算异常
  • 修正输入框提示文案,避免用户输入错误
  • 调整getRandomInt函数参数为最小值、最大值,逻辑与参数对应
  • 替换为正确的随机整数生成公式,保证生成结果同时包含设定的最小值和最大值
  • 新增输入合法性校验,出现非法输入时给出明确提示避免无响应

内容的提问来源于stack exchange,提问作者Zebulon Dexter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:54:04