Math.random

Math.random

Math.random() 函数返回一个浮点,  伪随机数在范围[0,1),也就是说,从0(包括0)往上,但是不包括1(排除1),然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。他不能被用户选择或重置。

Math.random() 不能提供像密码一样安全的随机数字

语法

Math.random()

返回值

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

示例

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

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

function getRandom() { return Math.random( }

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

这个例子返回了一个在指定值之间的随机数。这个值比min大(可能与min相等), 以及比max小(但是不等于max).

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

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

这个例子返回了一个在指定值之间的随机整数。这个值比min大(如果min不是整数,那么下一个整数大于min), 以及比max小(但是不等于max).

function getRandomInt(min, max) {   min = Math.ceil(min   max = Math.floor(max return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive }

也许很容易让人想用舍入来完成这个任务,但是这样做会导致你的随机数处于一个不均匀的分布,这可能不符合你的需求

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

getRandomInt()函数在最小值之上,它将排除最大值. 如果你需要结果包含最小值和最大值,怎么办呢? getRandomIntInclusive()函数将能完成.

function getRandomIntInclusive(min, max) {   min = Math.ceil(min   max = Math.floor(max return Math.floor(Math.random() * (max - min + 1)) + min; //The maximum is inclusive and the minimum is inclusive }

规范

SpecificationStatusComment
ECMAScript 1st Edition (ECMA-262)StandardInitial definition. JavaScript 1.0 (UNIX Only) / JavaScript 1.1 (All platforms).
ECMAScript 5.1 (ECMA-262)The definition of 'Math.random' in that specification.Standard
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Math.random' in that specification.Standard
ECMAScript Latest Draft (ECMA-262)The definition of 'Math.random' in that specification.Living Standard

浏览器兼容性

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)

FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)