为什么有人会在Math.floor
结果上致电Math.random
?我见过它用过:
Math.floor(Math.random() * num);
有人可以解释一下吗?
答案 0 :(得分:17)
Math.random
返回0到1之间的浮点数。
返回[0,1]范围内的浮点伪随机数,从0(包括)到最大但不包括1(不包括),然后可以缩放到所需范围。 / p>
将此乘以n得出0(包括)和n(不包括)之间的浮点数。
然后使用 Math.floor
将此浮点数转换为0到n - 1(含)之间的整数。
答案 1 :(得分:14)
为什么有人会在Math.random结果上调用Math.floor?
简而言之,当你想要将十进制值截断为其最接近的整数时(只需删除小数部分),就会调用Math.floor()
。因此,3.9变为3,2.1变为2等等......所以,当你需要一个整数并且你想要小于或等于十进制值的整数时,你通常会使用它。数学库也有Math.ceil()
和Math.round()
。Math.ceil()
可以帮助你下一个更大的整数Math.round()
向上舍入或向下舍入到最接近的整数,具体取决于哪个更接近。
我看过它用过:
Math.floor(Math.random() * num);
将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()
将十进制数截断为仅整数部分。随机整数通常用于从数组中获取随机值(需要为整数)。
答案 2 :(得分:1)
Math.random()
会给你一个长的随机小数。通常做的是将十进制乘以10,100,1000等以获得随机整数。但是,由于这样的小数太长,要获得绝对整数,可以使用Math.floor()
来舍入该数字。
答案 3 :(得分:1)
为什么我将Math.floor
与Math.random
合并?
你组合它们,否则它会返回一个浮点数。使用Math.floor可确保它是指定范围内的整数。
Math.random返回介于0和1之间的单位。将其乘以num
或最大范围会得到一个最大值为1 * num
的值。再次,Math.floor只是强迫它成为一个整数。
幕后故事:
随机数 - > .35 - >乘以11的最大值(num
) - >获得3.85 - > Math.floor(3.85) - > 3。
请记住 ,num
是 MAX + 1 。将num
设置为5只会生成数字1-4!
您可以查看此链接以获取更多信息:http://www.javascriptkit.com/javatutors/randomnum.shtml
田田:)
答案 4 :(得分:0)
Math.random()
在{0,1)
0.8747230430599302
之类的内容
我们使用.floor
将其四舍五入为最接近的整数。例如:
Math.random()*5 == 2.5889716914389282
这会在[0,5)之间生成一个数字。
Math.floor(Math.random()*5) == 2 //in this scenario
生成[0,4]
答案 5 :(得分:0)
它用于获取0到(max - 1)之间的整数随机数。
另一方面,在
中使用| 0
的速度更快
const randomInt = Math.random() * num | 0;
| 0
是二进制或为0,JavaScript规范有效地说结果在|
发生之前转换为整数。请注意,| 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
答案 6 :(得分:0)
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或Math.ceil得到一个整数885,如果在你的情况下,你不介意有一个浮点数,那就把它留下吧......
有关Math.floor如何工作的更多信息,请查看以下链接:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math/floor