在计算机编程中,随机数是一种极其重要的概念。仿佛是数学处理的玄学,如何在 JavaScript 中生成随机数呢?今天我们将介绍几种方法。

方法一:Math.random()

Math.random() 是 JavaScript 中生成随机数的最基础方法。该方法返回区间 [0, 1) 内的一个伪随机数。所谓伪随机数,是指该随机数的生成过程是根据计算机的算法生成的,看起来像是随机的,但实际上都是可预测的。

要生成一个在区间 [a, b] 的随机整数,可以使用如下公式:

Math.floor(Math.random() * (b – a + 1) + a)

使用 Math.floor() 取下整可以将随机数转化成整数,达到我们想要的效果。

方法二:Crypto API

从安全性方面考虑,可以使用 Crypto API 生成随机数。该 API 依赖于计算机的硬件熵,确保生成的随机数更加难以被预测。

要生成一个在区间 [a, b] 的随机整数,可以使用如下代码:

function getRandomInt(a, b) {

const cryptoObj = window.crypto || window.msCrypto;

const range = b – a + 1;

const bytes = new Uint8Array(1);

const maxValue = 256 – (256 % range);

let randomInt = 0;

while (randomInt >= maxValue) {

cryptoObj.getRandomValues(bytes);

randomInt = bytes[0];

}

return a + randomInt % range;

}

方法三:Fisher-Yates 算法

Fisher-Yates 算法是一种经典的随机化算法,可以将一个数组随机排列。借助这种算法,我们可以生成一个固定长度的随机数。代码如下:

function fisherYatesShuffle(arr) {

for (let i = arr.length – 1; i > 0; i–) {

const j = Math.floor(Math.random() * (i + 1));

[arr[i], arr[j]] = [arr[j], arr[i]];

}

}

方法四:运用库

最后,我们还可以使用第三方库生成随机数。比如 random.js 是一个小型的 JavaScript 库,提供了各种随机数生成函数,包括随机数、随机颜色、随机字符等。使用该库生成一个随机整数,只需要调用如下代码:

random.int(min, max)

总结

通过上述几种方法,我们可以生成不同类型和范围的随机数。在实际应用中,应选择适合自己需求的方法并确保生成的随机数具备一定随机性和安全性,以便更好地为项目服务。

详情参考

了解更多有趣的事情:https://blog.ds3783.com/