Java Math.random()它的随机性如何?

ast*_*ter 1 java random

我正在开发一个项目,需要从给定范围生成两个随机数(两个同时,一个接一个)并检查它们是否相等 - 如果是,则继续执行其他代码; 如果他们不是 - 再次生成数字.现在我的问题是,如果我们有一个范围[0; 10],并且第一个随机生成的数字结果为5,那么第二个数字的概率是否也是任何其他数字的5?具体来说,如果连续两次调用,Math.random()是否有任何"防御"来防止生成相同的数字?或者"尝试"不生成相同的数字?

Jim*_*son 7

对于任何随机数生成器,连续两次生成[0,10]范围内的相同数字是完全有效的.如果采取任何措施来防止它不是随机的.

在任何调用中,选择任何单个数字的机会应该是1:11,并且每个选择应该独立于先前的选择,因此在一对中第二个数字与第一个匹配的机会是11中的1.

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