![](/img/trans.png)
[英]How does Math.floor(Math.random() * (Max - Min + 1) + Min) work in JavaScript? (Theory)
[英]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
从[ 0
, 1
)(浮点: '['=包容, ')'=排斥)。
所以在Math.floor( (Math.random() * 10) + 1);
相乘Math.random()
由10
将提供从[随机数0
, 10
)。
的+1
乘法之后将改变输出为[ 1
, 11
)。
然后最后Math.floor( ... )
转换随机数的范围是从[ 1
, 11
)为一个整数值。
因此,执行语句的范围将是[所有整数1
, 10
]。 或者更具体这将是在该组数字中的一个:{ 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, 10
}
Math.random方法返回0(包括)和1(不包括)之间的随机数。 其中0.9 * 10 = 9。
通过Google V8项目:
Math.random()使用依赖于实现的算法或策略,返回具有正号,大于或等于0但小于1的Number值,随机或伪随机选择,在该范围内具有近似均匀的分布。 此函数不带参数。
Math.random使用一种叫做xorshift128 +的算法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.