JavaScript在安全性要求较高的环境中生成随机数,通例的建议是利用 Mozilla API 中的**window.crypto.getRandomValues()**函数,但这种方法受限于欣赏器的兼容性,只在较新的版本(Chrome>=11.0,
Firefox>=21, Edge, IE>=11,
Safari>=3.1)可以利用。如果考虑到旧版本欣赏器,则应在javascript之外处理PRNG功能。
/**
* @description: 生成随机数0-255
* @param {num} 最大值
*/
export const random8bitValue = (num) => {
// 创建一个长度为1的Uint8Array类型数组
let randomValues = new Uint8Array(1);
// 使用window.crypto.getRandomValues()方法填充数组
window.crypto.getRandomValues(randomValues);
// 获取0到num的随机整数
let randomInteger = num ? randomValues[0] % num : randomValues[0];
return randomInteger;
};
/**
* @description: 生成随机数0-4294967295(2^32-1)
* @param {num} 最大值
*/
export const random32bitValue = (num) => {
// 创建一个长度为1的Uint8Array类型数组
let randomValues = new Uint32Array(1);
// 使用window.crypto.getRandomValues()方法填充数组
window.crypto.getRandomValues(randomValues);
// 获取0到num的随机整数
let randomInteger = num ? randomValues[0] % num : randomValues[0];