Math.floor是什么((Math.random()* 10)+ 1);工作?

时间:2017-05-04 19:16:14

标签: javascript

我理解Math.floor将数字四舍五入为最小整数,但是当我们这样做时:Math.random()* 10不会将数字乘以10,例如9 * 10 = 90,那么数字如何在1到10之间?

感谢您帮助我得到答案!

4 个答案:

答案 0 :(得分:3)

正如MDN

中所述
  

Math.random()函数返回一个浮点伪随机函数   数字在[0,1]范围内[即从0(含)到最高但不是   包括1(独家),然后你可以扩展到你想要的   范围。实现选择随机的初始种子   数字生成算法;它不能被用户选择或重置。

即表示Math.random()*10的最小值为0而上限值为10.在此表达式中加1会产生范围[1,11]中的数字。然后通过获取Math.floor,我们得到范围[0,10]中的整数,因为Math.floor()

  

最大整数小于或等于返回给定数字。

答案 1 :(得分:3)

Math.random()提供来自[number0的随机1(浮点:'['=包含,')'=独占)。

因此,在Math.floor( (Math.random() * 10) + 1);Math.random()乘以10将提供[010的随机数。

乘法后的+1会将输出更改为[111)。

最后Math.floor( ... )将[111范围内的随机数转换为整数值。

因此,执行语句的范围将是[110]的所有整数。或者更具体地说,它将是此集合中的一个数字:{12345,{{1 }},6789}

答案 2 :(得分:1)

Math.random方法返回0(包括)和1(不包括)之间的随机数。这给出了0.9 * 10 = 9。

答案 3 :(得分:0)

通过Google V8项目:

  

Math.random()返回一个带有正号的Number值,大于   或等于0但小于1,随机选择或伪随机选择   在该范围内近似均匀分布,使用   依赖于实现的算法或策略。这个功能不需要   参数。

Math.random使用名为xorshift128+

的算法

详细了解There's Math.random(), and then there's Math.random()