📜  javascript 随机数 - Javascript (1)

📅  最后修改于: 2023-12-03 15:01:46.987000             🧑  作者: Mango

Javascript随机数

Javascript中有多种方式可以生成随机数,这些随机数可以用于各种用途,例如生成验证码、随机排序数组、模拟游戏等。下面介绍几种生成随机数的方法。

1. Math.random()

Math.random()是Javascript内置的函数,它返回0到1之间的随机数,包括0但不包括1。如果需要生成其他范围的随机数,可以进行相应的数学计算。

下面是生成0到9之间的整数:

const randomInt = Math.floor(Math.random() * 10);

解析:

  • Math.random()生成[0,1)之间的随机数
  • Math.floor()将小数向下取整,得到整数
  • Math.random() * 10生成[0,10)之间的随机数
  • Math.floor(Math.random() * 10)生成0到9之间的整数
2. window.crypto.getRandomValues()

window.crypto.getRandomValues()是一种更为安全的生成随机数的方法,它使用操作系统提供的真随机数生成器生成随机数,而不是利用伪随机数算法。

下面是生成8位随机字符串:

const randomValues = new Uint8Array(8);
window.crypto.getRandomValues(randomValues);
const randomString = Array.from(randomValues).map(dec => `0${dec.toString(16)}`.substr(-2)).join('');

解析:

  • new Uint8Array(8)生成8个8位无符号整数的数组
  • window.crypto.getRandomValues(randomValues)将数组随机填充
  • Array.from(randomValues)将生成的随机数数组转换为普通数组
  • map方法将每个数字转换为16进制字符串
  • substr(-2)方法保证每个字符串至少为两位数
  • join('')方法将生成的字符串拼接在一起
3. npm包

除了以上两种方法外,还有很多npm包可以生成随机数,例如randomuuidchance等。

下面是使用random包生成随机数:

const random = require('random');
const randomNumber = random.int(0, 100); //生成0到100之间的随机整数
总结

以上介绍了Javascript中三种生成随机数的方法,需要注意的是,用于安全性要求较高的地方,应该使用window.crypto.getRandomValues()这种更为安全的方法。同时,在使用Math.random()生成随机数时,需要进行相应的数学计算,才能生成自己需要的随机数。