为什么有人会在Math.random
结果上致电Math.floor
?我已经看到了使用,如:为什么要将Math.floor与Math.random结合使用?
Math.floor(Math.random() * num);
有人能解释吗?
为什么有人会在Math.random
结果上致电Math.floor
?我已经看到了使用,如:为什么要将Math.floor与Math.random结合使用?
Math.floor(Math.random() * num);
有人能解释吗?
Math.random
返回0和1
之间的浮点数在范围[0,则返回一个浮点,伪随机数,1),是从0(含)最多但不包括1(独占),然后您可以缩放到您想要的范围。
将此乘以n,得出0(含)和n(不含)之间的浮点数。
Math.floor
然后用于将此浮点数转换为0到n - 1(含)之间的整数。
Math.random()
会给你一个很长的随机小数。通常所做的就是将该小数乘以10,100,1000等,以得到一个随机的整数。但是,由于这样的小数点很长,为了得到一个绝对的整数,您使用Math.floor()
来减少该数字。
为什么我要结合Math.floor
与Math.random
?
你把它们组合起来,否则它会返回一个浮点数。使用Math.floor可确保它是指定范围内的整数。
Math.random返回一个介于0和1之间的单位。将其乘以num
或最大范围将得到一个具有该数字最大值的值(1 * num
)。 Math.floor再一次强迫它成为一个整数。
幕后:
随机数 - > 0.35 - 由最大值乘以>的(num
)11 - >获取3.85 - > Math.floor(3.85) - > 3.
记住,num
是MAX + 1。将num
设置为5将仅生成数字1-4!
你可以看看这个链接获取更多信息:http://www.javascriptkit.com/javatutors/randomnum.shtml
田田:)
Math.random()
回报像0.8747230430599302
之间[0,1)
我们使用.floor
圆它下降到最接近的整数。例如:
Math.random()*5 == 2.5889716914389282
这会在[0,5)之间生成一个数字。
Math.floor(Math.random()*5) == 2 //in this scenario
生成[0,4]
之间的数字打破Math.floor(Math.Random() * num)
分解成它的各个部分,并解释每一块,你会得到这样的:
Math.random()
给你0和1之间的随机十进制数,包括0,但不包括1.所以,它可能会给你类似0.38548569372
。
Math.random() * num
给你一个0到num之间的随机小数,包括0,但不包括num。所以,如果num是10,它可能会给你3.8548569372
。
Math.floor(Math.random() * num))
给你一个0到num之间的随机整数,包括0,但不包括num。所以,它可能会给你3
。
Math.floor()
将十进制数截断为仅整数部分。随机整数通常用于从数组中获得一个随机值(它需要是一个整数)。
它用于获取介于0和(max - 1)之间的整数随机数。
在另一方面它的速度更快在
const randomInt = Math.random() * num | 0;
的| 0
使用| 0
作为是二进制或0其中的JavaScript SPEC有效表示,结果被转换成一个整数的|
发生之前。请注意,| 0
与Math.floor
不一样。 | 0
轮到0,而Math.floor
下轮。
| 0 Math.floor
------+------+------------
2.5 | 2 | 2
1.5 | 1 | 1
0.5 | 0 | 0
-0.5 | 0 | -1
-1.5 | =1 | -2
-2.5 | -2 | -3
var num = Math.floor(Math.random() * 1000); // e.g. 885
var flNum = Math.random() * 1000; //e.g. 885.9936205333221
尝试的Math.random()* 1000例如,你可能会得到这样的事情:885.9936205333221,在很多情况下,我们需要一个圆形的数量,所以很多开发商Math.floor或数学使用.ceil得到一个像885的整数,如果你的情况,你不介意有一个浮点数,因为它是...
有关Math.floor如何工作的更多信息,请查看此链接:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
谁是“我们”? :) –
@quixoto因为我多次看到这段代码,这就是为什么我说“我们”,生病无论如何改变它> –
我并没有批评你的措辞。对于这类问题来说,这很有用,可以说明这是你经常看到的东西,或者经常在某种类型的代码中看到,这样人们就可以获得上下文并知道如何最好地回答你。 –