1.生成一个16位的随机数字
Math.random()
会生成一个小数点后16位的小数,然后截取后16位即可,问题是末尾可能为0,导致不够16位。那么就严格控制长度。
var fun = function() {
let res = "0";
while(res.length !== 16){
res = String(Math.random()).split('.')[1].slice(0, 16);
}
return res;
}
2. 基于非空str生成一个16位随机数
已知一个非空字符串变量 str,请基于 str 生成一个16位的随机数字,也就是不同的 str 值随机数字不同,但是相同的 str 值生成的随机数是一样的。
方法很多,比如:
先用charCodeAt()
方法将每个字符都转成 0~65535 的Unicode码,然后拼接起来,再通过一个符合一一映射的数学函数映射成一个16位的随机数。
const seed = function (str) {
// 通过Unicode码拼接变成数值
let num = str.split('').map(char => char.charCodeAt()).join('');
// 对应sin变成随机数值
return Math.sin(num).toString().split(