📅  最后修改于: 2023-12-03 15:01:46.987000             🧑  作者: Mango
Javascript中有多种方式可以生成随机数,这些随机数可以用于各种用途,例如生成验证码、随机排序数组、模拟游戏等。下面介绍几种生成随机数的方法。
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之间的整数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('')
方法将生成的字符串拼接在一起除了以上两种方法外,还有很多npm包可以生成随机数,例如random
、uuid
、chance
等。
下面是使用random
包生成随机数:
const random = require('random');
const randomNumber = random.int(0, 100); //生成0到100之间的随机整数
以上介绍了Javascript中三种生成随机数的方法,需要注意的是,用于安全性要求较高的地方,应该使用window.crypto.getRandomValues()
这种更为安全的方法。同时,在使用Math.random()
生成随机数时,需要进行相应的数学计算,才能生成自己需要的随机数。