我正在开发一个项目,需要从给定范围生成两个随机数(两个同时,一个接一个)并检查它们是否相等 - 如果是,则继续执行其他码;如果他们不是 - 再次生成数字。现在我的问题是,如果我们有一个范围[0; 10],并且第一个随机生成的数字结果为5,那么第二个数字的概率是否也是任何其他数字的5?具体来说,如果连续两次调用,Math.random()是否有任何“防御”来防止生成相同的数字?或者“尝试”不生成相同的数字?
答案 0 :(得分:7)
连续两次在[0,10]范围内生成相同的数字对任何随机数生成器都是完全有效的。如果它采取了任何措施来防止它不是随机的。
在任何调用中,选择任何单个数字的机会应该是1:11,并且每个选择应该独立于先前的选择,因此在一对中第二个数字与第一个数字匹配的机会是11中的1。 / p>
关于随机Math.random()
是多少,它是伪随机,这意味着它使用算法生成一系列均匀分布的数字,以“种子”值开头。它不适用于加密,但非常适合模拟和其他非加密用途。