From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../global_objects/math/random/index.html | 94 ++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 files/zh-cn/web/javascript/reference/global_objects/math/random/index.html (limited to 'files/zh-cn/web/javascript/reference/global_objects/math/random/index.html') diff --git a/files/zh-cn/web/javascript/reference/global_objects/math/random/index.html b/files/zh-cn/web/javascript/reference/global_objects/math/random/index.html new file mode 100644 index 0000000000..46aad728b8 --- /dev/null +++ b/files/zh-cn/web/javascript/reference/global_objects/math/random/index.html @@ -0,0 +1,94 @@ +--- +title: Math.random() +slug: Web/JavaScript/Reference/Global_Objects/Math/random +tags: + - JavaScript + - Math + - Math.random() + - Method + - 随机数 +translation_of: Web/JavaScript/Reference/Global_Objects/Math/random +--- +
{{JSRef}}
+ +
Math.random() 函数返回一个浮点,  伪随机数在范围从0到小于1,也就是说,从0(包括0)往上,但是不包括1(排除1),然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。
+ +

{{EmbedInteractiveExample("pages/js/math-random.html")}}

+ +
+

Math.random() 不能提供像密码一样安全的随机数字。不要使用它们来处理有关安全的事情。使用Web Crypto API 来代替, 和更精确的{{domxref("RandomSource.getRandomValues()", "window.crypto.getRandomValues()")}} 方法.

+
+ +

语法

+ +
Math.random()
+ +

返回值

+ +

一个浮点型伪随机数字,在0(包括0)和1(不包括)之间。

+ +

示例

+ +

请注意, 由于 JavaScript 中的数字是 IEEE 754 浮点数字,具有最近舍入( round-to-nearest-even)的行为, 因此以下函数的范围 (不包括Math.random() 本身) 并不准确。如果选择了非常大的边界 (253 或更高), 在极罕见的情况下会计算通常-排除(usually-excluded)的上界。(注:round-to-nearest-even采用最近舍入的去偶数舍入的方式,对.5的舍入上,采用取偶数的方式)

+ +

得到一个大于等于0,小于1之间的随机数

+ +
function getRandom() {
+  return Math.random();
+}
+ +

得到一个两数之间的随机数

+ +

这个例子返回了一个在指定值之间的随机数。这个值不小于 min(有可能等于),并且小于(不等于)max

+ +
function getRandomArbitrary(min, max) {
+  return Math.random() * (max - min) + min;
+}
+
+ +

得到一个两数之间的随机整数

+ +

这个例子返回了一个在指定值之间的随机整数。这个值不小于 min (如果 min 不是整数,则不小于 min 的向上取整数),且小于(不等于)max

+ +
function getRandomInt(min, max) {
+  min = Math.ceil(min);
+  max = Math.floor(max);
+  return Math.floor(Math.random() * (max - min)) + min; //不含最大值,含最小值
+}
+ +
+

也许很容易想到用 Math.round() 来实现,但是这会导致你的随机数处于一个不均匀的分布,这可能不符合你的需求。

+
+ +

得到一个两数之间的随机整数,包括两个数在内

+ +

上一个例子提到的函数 getRandomInt() 结果范围包含了最小值,但不含最大值。如果你的随机结果需要同时包含最小值和最大值,怎么办呢?  getRandomIntInclusive() 函数可以实现。

+ +
function getRandomIntInclusive(min, max) {
+  min = Math.ceil(min);
+  max = Math.floor(max);
+  return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值 
+}
+ +

规范

+ + + + + + + + + + +
规范
{{SpecName('ESDraft', '#sec-math.random', 'Math.random')}}
+ +

浏览器兼容性

+ +

{{Compat("javascript.builtins.Math.random")}}

+ +

相关链接

+ + -- cgit v1.2.3-54-g00ecf