Math.random 的简单替换可能如下所示:
/**
* Return values in the range of [0, 1)
*/
const randomFloat = function () {
const int = window.crypto.getRandomValues(new Uint32Array(1))[0]
return int / 2**32
}
将其扩展到整数:
/**
* Return integers in the range of [min, max)
*
* @todo check that min is <= max.
*/
const randomInt = function (min, max) {
const range = max - min
return Math.floor(randomFloat() * range + min)
}
要将其扩展到整数数组:
/**
* Generate an array of integers in the range of [min, max).
*/
const randomIntArray = function (length, min, max) {
return new Array(length).fill(0).map(() => randomInt(min, max))
}
生成一个包含 0 到 2 的十个整数的数组:
randomIntArray(10, 0, 3)
[0, 2, 1, 2, 0, 0, 1, 0, 1, 0]