JS中Math.floor(Math.random() * 10 + 1)语句的作用是什么
Math.random() * 10 + 1 运算逻辑 要搞懂这部分逻辑,首先得明确Math.random()的基础返回规则:它会返回一个伪随机浮点数,取值范围固定为 大于等于0,且严格小于1,也就是数学上的左闭右开区间 [0, 1),永远不会返回1。
这部分表达式的运算遵循JS常规算术优先级,先算乘法再算加法,取值范围变化分两步:
- 第一步执行
Math.random() * 10:把原始取值范围放大10倍,得到的浮点数范围是[0, 10),即大于等于0、严格小于10 - 第二步执行
+1:把整个取值区间向右平移1个单位,最终得到的浮点数范围是[1, 11),即大于等于1、严格小于11
整行代码的最终功能
外层的Math.floor()会对传入值做向下取整,也就是直接舍去小数部分,返回小于等于传入值的最大整数。结合前面得到的[1, 11)浮点数范围:
- 传入值落在
[1,2)区间时,取整结果为1 - 传入值落在
[2,3)区间时,取整结果为2 - 以此类推,传入值落在
[10,11)区间时,取整结果为10
因为Math.random()永远取不到1,所以Math.random() *10 +1永远取不到11,也就不会出现取整得到11的边界问题。整行代码最终的作用是:生成1到10之间(包含边界值1和10)的随机整数,这是JavaScript中生成指定闭区间随机整数的经典基础写法。
内容的提问来源于stack exchange,提问作者Uzumaki Naruto
相关产品推荐
相关产品推荐

