前端高级-生成随机数

在 javascript 中,想要得到一个随机数,通常使用 Math.random() 函数,它将得到一个从0到1(包含0不包含1)之间的一个浮点数。
然而随机数的使用并不像这么简单,下面一起来探讨一下js中的随机数。

Math.random()生成特定范围内的随机数

  • 生成0-1随机小数【0<= r < 1】

    1
    2
    3
    function getRandom() {
    return Math.random();
    }
  • 生成一定范围的随机数【min<= r < max】

    1
    2
    3
    function getRandomArbitrary(min, max) {
    return Math.floor(Math.random() * (max - min)) + min;
    }
  • 生成一定范围的随机整数【min<= r < max】

    1
    2
    3
    4
    5
    function getRandomInt(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min)) + min;
    }
  • 生成包含最大最小值的随机整数【min <= r <= max】

    1
    2
    3
    4
    5
    function getRandomIntInclusive(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1)) + min;
    }

window.crypto.getRandomValues API

Math.random()只是用来创建一个随机数字,但是用它来生成随机安全密码是不行的。

如果要实现这种功能,可以使用getRandomValues API。

首先创建一个typedArray数组用来存储随机结果,数组的元素类型可以是Int8Array,Uint8Array,
Int16Array,Uint16Array,Int32Array,Uint32Array

1
var array = new Uint32Array(10); //表示创建一个长度为10的无符号32位整型数组

然后调用API,填充随机数值。

1
window.cryto.getRandomValues(array);

参考文档