Java Math.random()它有多随机?

Java Math.random()它有多随机?,java,random,Java,Random,我正在从事一个项目,需要从给定的范围内同时生成两个随机数,一个接一个,并检查它们是否相等-如果相等,则继续执行其他代码;如果没有,请再次生成数字。现在我的问题是,如果我们有一个范围[0;10],第一个随机生成的数字是5,那么第二个数字的概率是否也和其他任何数字一样好?具体地说,如果Math.random连续调用两次,它是否可以防止生成相同的数字?或者它试图不生成相同的数字?连续两次在[0,10]范围内生成相同的数字对于任何随机数生成器都是完全有效的。如果它采取任何措施来防止这种情况发生,它就不会

我正在从事一个项目,需要从给定的范围内同时生成两个随机数,一个接一个,并检查它们是否相等-如果相等,则继续执行其他代码;如果没有,请再次生成数字。现在我的问题是,如果我们有一个范围[0;10],第一个随机生成的数字是5,那么第二个数字的概率是否也和其他任何数字一样好?具体地说,如果Math.random连续调用两次,它是否可以防止生成相同的数字?或者它试图不生成相同的数字?

连续两次在[0,10]范围内生成相同的数字对于任何随机数生成器都是完全有效的。如果它采取任何措施来防止这种情况发生,它就不会是随机的

在任何调用中,任何单个数字被选择的几率都应该是1:11,并且每个选择都应该独立于之前的选择,因此成对的第二个数字与第一个数字匹配的几率是1:11


至于random Math.random是什么,它是伪随机的,这意味着它使用一种算法来生成一系列以种子值开始的均匀分布的数字。它不适用于加密,但非常适合于模拟和其他非加密用途。

连续两次生成[0,10]范围内的相同数字对于任何随机数生成器来说都是完全有效的。如果它采取任何措施来防止这种情况发生,它就不会是随机的

在任何调用中,任何单个数字被选择的几率都应该是1:11,并且每个选择都应该独立于之前的选择,因此成对的第二个数字与第一个数字匹配的几率是1:11


至于random Math.random是什么,它是伪随机的,这意味着它使用一种算法来生成一系列以种子值开始的均匀分布的数字。它不适用于加密,但非常适合于模拟和其他非加密用途。

您只需执行for循环,生成60000个介于1-6之间的随机数,然后自己查看。它的分布相当均匀。实施细节,我现在不记得了,但可能在维基百科上。pseudo randomMath.random相当不错,但它不是高级PRNG,我相信它是一个简单的LCG实现。明显的模式和随机模式一样可能。这里有一些非随机的例子,你可以做一个for循环,生成60000个1-6之间的随机数,自己看看。它的分布相当均匀。实施细节,我现在不记得了,但可能在维基百科上。pseudo randomMath.random相当不错,但它不是高级PRNG,我相信它是一个简单的LCG实现。明显的模式和随机模式一样可能。下面是一些非随机的例子。每个选择都应该独立于以前的选择。。给我总结一下,谢谢。只是想确定…每个选择都应该独立于之前的选择。。给我总结一下,谢谢。只是想确定一下。