math.random()和其他RNG函数的工作频率

How often the math.random() and other RNG functions work?

本文关键字:函数 工作 频率 RNG 其他 random math      更新时间:2023-09-26

所以我最近刚开始编码,我有一个关于RNG函数的问题,比如Math.random()。它们多久会消失一次?每当一个需要从中得到一个值时,它会产生另一个数字吗。例如,在中

var num1; 
num1 = Math.random();
alert(num1)
num1 = Math.random();
alert(num1);

两个JS警报的编号会不同吗?使用类似的东西时也是如此

function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}

而不是在上面的程序中使用Math.random()。

Math.random的规范是这样说的:

返回一个带正号的数字值,该值大于或等于0但小于1,使用依赖于实现的算法或策略随机或伪随机选择,在该范围内近似均匀分布。此函数不接受任何参数。

因此,它并没有明确地解决这个问题,但这本身就是一个答案。这是一个函数,当你调用它时会返回一个随机数。唯一有意义的是对多个连续调用保持安全。事实上,

Math.random() == Math.random()

正如预期的那样,将(几乎)总是返回false。是的,实现可能会给出不同的结果,但你很难找到一个伪随机生成器,当从同一个线程反复调用时,它不会返回不同的值。

"近似均匀分布"基本上意味着return 0.3不是一个一致的实现,无论掷骰子导致该常数有多公平。这也意味着,两个连续的调用完全有可能返回相同的号码——只是不太可能:)

Math.Random只是一个给出随机数的函数。它没有内存来保存已经生成的数字,因此不能保证不会生成重复的数字,尽管可能性很低。

在您的第二个示例中,将生成最小值到最大值之间的随机数,包括最小值和最大值。