📅  最后修改于: 2023-12-03 15:16:15.793000             🧑  作者: Mango
在编写 JavaScript 程序时,获取随机数是非常常见的需求。JavaScript 提供了多种方式来获取随机数,我们可以根据具体需求选择不同的方式。
Math.random()
是最常用的获取随机数的方式之一。这个方法返回一个介于 0 到 1 之间的浮点数。
下面是一个获取 0 到 9 之间随机整数的示例代码:
var randomNum = Math.floor(Math.random() * 10);
以上代码中,Math.floor()
方法将浮点数向下取整为一个整数,因此我们可以得到一个介于 0 到 9 之间的随机整数。
不同的随机数生成器通常使用不同的随机数种子。如果我们不指定种子,Math.random()
方法将使用当前时间作为种子来生成随机数。也就是说,每次调用 Math.random()
方法时,都会得到不同的随机数。
我们可以通过指定一个种子来实现生成固定的随机数序列。下面是一个生成固定随机数序列的示例代码:
var randomSeed = 12345;
Math.seedrandom(randomSeed);
var randomNum1 = Math.random();
var randomNum2 = Math.random();
以上示例中,我们使用了一个名为 seedrandom
的库来生成固定的随机数序列。我们先使用 Math.seedrandom()
方法指定种子为 12345,然后分别调用两次 Math.random()
方法,得到了相同的随机数。
Crypto.getRandomValues()
方法是一种更为安全的获取随机数的方式。这个方法使用了操作系统提供的随机数生成器,并返回一个包含指定长度随机字节数组的 Uint8Array
对象。
下面是一个获取 4 个字节随机数的示例代码:
var randomBytes = new Uint8Array(4);
window.crypto.getRandomValues(randomBytes);
var randomNum = (randomBytes[0] << 24) | (randomBytes[1] << 16) | (randomBytes[2] << 8) | randomBytes[3];
以上代码中,我们使用 Uint8Array
类型的对象来存储获取到的随机字节数组。接着调用 Crypto.getRandomValues()
方法获取随机字节数组,然后将其转换为一个整数类型的随机数。