我的随机数生成代码仅输出单个数值,问题出在哪里?
问题:Math.random()始终返回相同数值?

我尝试修改数值,也试过移除并重新添加Math.floor,但结果始终相同。原本应该每次生成不同的数值,但无论我执行多少次代码,都只输出同一个数。
我的代码如下:
var thisIsNew = Math.floor(Math.random() * 6);
问题原因及解决办法
- 核心问题:
Math.random()仅在执行语句时生成新随机数,如果你只给thisIsNew赋值一次,后续反复输出的都是第一次生成的固定值。
错误写法:
正确写法:每次需要随机数时重新调用var thisIsNew = Math.floor(Math.random() * 6); // 多次输出同一个变量,结果自然相同 console.log(thisIsNew); console.log(thisIsNew);Math.random()// 直接每次调用生成新值 console.log(Math.floor(Math.random() * 6)); console.log(Math.floor(Math.random() * 6)); // 或者封装成函数,按需调用 function getRandomNum() { return Math.floor(Math.random() * 6); } console.log(getRandomNum()); console.log(getRandomNum()); - 循环场景排查:如果是在循环里出现该问题,检查是否把变量定义放在了循环外部,导致仅生成一次随机数。
错误示例:
正确示例:var thisIsNew = Math.floor(Math.random() * 6); for (let i = 0; i < 5; i++) { console.log(thisIsNew); // 始终输出同一个数 }for (let i = 0; i < 5; i++) { var thisIsNew = Math.floor(Math.random() * 6); console.log(thisIsNew); // 每次输出不同数值 }
内容的提问来源于stack exchange,提问作者Achintya Pandey
相关产品推荐
相关产品推荐

