繁体   English   中英

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

[英]How does Math.floor( (Math.random() * 10) + 1 ); work?

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

谢谢你的帮助,我得到了答案!

正如MDN中所述

Math.random()函数返回[0,1]范围内的浮点伪随机数[也就是说,从0(包括)到最多但不包括1(不包括),然后您可以将其缩放到您的期望的范围。 该实现选择初始种子到随机数生成算法; 它不能被用户选择或重置。

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

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

Math.random()提供了一个随机number从[ 01 )(浮点: '['=包容, ')'=排斥)。

所以在Math.floor( (Math.random() * 10) + 1); 相乘Math.random()10将提供从[随机数010 )。

+1乘法之后将改变输出为[ 111 )。

然后最后Math.floor( ... )转换随机数的范围是从[ 111 )为一个整数值。

因此,执行语句的范围将是[所有整数110 ]。 或者更具体这将是在该组数字中的一个:{ 12345678910 }

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

通过Google V8项目:

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

Math.random使用一种叫做xorshift128 +的算法

阅读更多关于Math.random()的信息,然后是Math.random()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM