我的主要目的是将缓冲区随机有效地分布在图像的像素上,但我在生成 鲜明 随机数。我只是想在 0 和 N但我也希望这些数字是不同的。还请注意 N 通常会相当大,比如2000万,算法不一定要加密安全。
我不能用随机洗牌法,因为N相当大。我搜索了一下,发现 线性同调发生器 但参数 m 是需要质数的,但我的N有时不是。
最后,我尝试了下面的方法,但它不是很有效和可靠,因为它可能会抛出以下问题 超过最大调用栈大小 错误。
next(max: number)
{
let num = LCG.next()
if (num <= max) return num
return next(max)
}