为什么有人会要求Math.floor
结果Math.random
?我见过它像这样使用:
Math.floor(Math.random() * num);
有人可以解释一下吗?
为什么有人会要求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 结果上调用 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()
将十进制数截断为仅整数部分。随机整数通常用于从数组中获取随机值(必须是整数)。
Math.random()
会给你一个长的,随机的小数。通常做的是将该小数乘以 10、100、1000 等以获得随机整数。但是,由于这样的小数很长,要获得一个绝对整数,您可以Math.floor()
将该数字向下舍入。
我为什么要结合Math.floor
With Math.random
?
你将它们结合起来,否则它会返回一个浮点数。使用 Math.floor 确保它是指定范围内的整数。
Math.random 返回一个介于 0 和 1 之间的单位。将其乘以您的num
或最大范围可以得到一个最大值为该数字 (1 * num
) 的值。同样,Math.floor 只是强迫它成为一个整数。
幕后花絮:
随机数 -> .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] 之间的数字
它用于获取 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
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