时间:2025-05-16 10:09:30

文章目录

  • 一、()
    • 获取随机数
  • 二、()
    • 获取符合密码学要求的安全的随机值

一、()

获取随机数

获取xx以内的随机数:() * xx

举个例子,获取 n个字母

//创建26个字母数组
let arr = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
let idvalue ='';
let n = 23; //这个值可以改变的,对应的生成多少个字母,根据自己需求所改
for(let i=0;i<n;i++){
   idvalue+=arr[Math.floor(Math.random()*26)]; //返回arr里0~25的随机数
}
console.log("随机数:"+idvalue+";长度:"+idvalue.length) //随机数:THIUDGYKOLVFXAWRYKHPLMF;长度:23

二、()

获取符合密码学要求的安全的随机值

项目代码扫描,推荐使用该法,故学之
先看下 官方文档

获取随机数:(new Uint8Array(1)) //????

然后就从其他好兄弟们,找到了一些答案(集中如下)
()等价表达式:(new Uint8Array(1)) * 0.001
获得一个大于零的随机数:(new Uint32Array(1))[0];
获取一个范围内的随机数:https:///tech/ 【终于找到我想要的!泪目】

继续上面那个例子,获取 n个字母

let arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
          'U', 'V', 'W', 'X', 'Y', 'Z'
        ];
let idvalue = ''
let n = 23; //这个值可以改变的,对应的生成多少个字母,根据自己需求所改
for (let i = 0; i < n; i++) {
    const randomBuffer = new Uint32Array(1);
    window.crypto.getRandomValues(randomBuffer);
    let randomNumber = randomBuffer[0] / (0xffffffff + 1);
    idvalue += arr[Math.floor(randomNumber * 26)]
}
console.log("随机数:"+idvalue+";长度:"+idvalue.length) //随机数:THIUDGYKOLVFXAWRYKHPLMF;长度:23

故 上面也可换为公共方法,来获取一定范围的随机数

function getRandomIntInclusive(min, max) {
    const randomBuffer = new Uint32Array(1);
    window.crypto.getRandomValues(randomBuffer);
    let randomNumber = randomBuffer[0] / (0xffffffff + 1);
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(randomNumber * (max - min + 1)) + min;
}

let arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
          'U', 'V', 'W', 'X', 'Y', 'Z'
        ];
let idvalue = ''
let n = 23; //这个值可以改变的,对应的生成多少个字母,根据自己需求所改
for (let i = 0; i < n; i++) {
idvalue += arr[getRandomIntInclusive(0, 25)]
}

⚠️ 参数是 typedArray 类型
类型范围如下:
Int8 - [-128 : 127]
Int16 - [-32768 : 32767]
Int32 - [-2147483648 : 2147483647]
Int64 - [-9223372036854775808 : 9223372036854775807]
UInt8 - [0 : 255]
UInt16 - [0 : 65535]
UInt32 - [0 : 4294967295]
UInt64 - [0 : 18446744073709551615]

⚠️ 可用subarray来截取,而不是substring、slice、substr

⚠️ 用到()、()、()的原因是:输入的不一定都是整数

复制粘贴总结到此为止,在下告辞~????