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

JavaScript新手求助:如何在JavaScript中生成新随机数?

解决乘法口诀工具无法生成新随机数的问题

嘿,我懂你的烦恼!作为JavaScript新手碰到这种小卡点太正常了~你现在的问题根源在于随机数变量的作用域,咱们一步步来解决:

问题分析

你把r1和r2定义在start函数外面的全局作用域里了:

var r1 = Math.floor(Math.random() * 13); 
var r2 = Math.floor(Math.random() * 13); 

function start() {
  println("Welcome to the multiplication helper! ");
  // ...你的其他代码
}

这种情况下,r1和r2只会在页面加载完成时生成一次随机数,之后不管你调用多少次start函数,这两个变量的值都不会更新,自然没法得到新的随机乘法题啦。

解决方案

把随机数的生成逻辑移到start函数内部!这样每次调用start的时候,都会重新计算新的随机数:

function start() {
  // 每次调用函数都重新生成随机数
  var r1 = Math.floor(Math.random() * 13);
  var r2 = Math.floor(Math.random() * 13);
  
  println("Welcome to the multiplication helper! ");
  // 比如这里可以输出乘法题:
  println(`What's ${r1} × ${r2}?`);
  // ...后续的答题判断逻辑也能直接用r1和r2
}

额外小提示

如果你的代码里需要在start函数外部也访问这两个随机数(比如用来验证答案),可以把它们声明为全局变量,但在函数内部重新赋值:

// 全局声明变量,但不初始化
let r1, r2;

function start() {
  // 每次调用函数更新全局变量的值
  r1 = Math.floor(Math.random() * 13);
  r2 = Math.floor(Math.random() * 13);
  
  println("Welcome to the multiplication helper! ");
  println(`What's ${r1} × ${r2}?`);
}

// 比如验证答案的函数
function checkAnswer(userAnswer) {
  if (userAnswer === r1 * r2) {
    println("答对啦!🎉");
  } else {
    println(`答错了,正确答案是${r1 * r2}哦~`);
  }
}

这样就能完美实现每次启动工具都生成新的乘法题了,加油!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:44:34