📜  javascript 获取随机数 - Javascript (1)

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

JavaScript 获取随机数

在编写 JavaScript 程序时,获取随机数是非常常见的需求。JavaScript 提供了多种方式来获取随机数,我们可以根据具体需求选择不同的方式。

Math.random()

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()

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() 方法获取随机字节数组,然后将其转换为一个整数类型的随机数。