在 javascript 中,想要得到一个随机数,通常使用 Math.random()
函数,它将得到一个从0到1(包含0不包含1)之间的一个浮点数。
然而随机数的使用并不像这么简单,下面一起来探讨一下js中的随机数。
Math.random()
生成特定范围内的随机数
生成0-1随机小数【0<= r < 1】
1
2
3function getRandom() {
return Math.random();
}生成一定范围的随机数【min<= r < max】
1
2
3function getRandomArbitrary(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}生成一定范围的随机整数【min<= r < max】
1
2
3
4
5function 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
5function 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); |