有2个Random类的构造函数
Random
public Random()
public Random(long seed)
按照用于第二构造的描述预言状态如
使用单个长种子创建一个新的随机数生成器。种子是通过方法next(int)维护的伪随机数生成器内部状态的初始值。
我不完全了解。而且我没有找到任何文章/书可以清楚地解释 为什么 , 何时 以及 如何使用 它。
有人可以解释一下吗?
伪随机数生成器通过根据先前生成的数字重复生成一个新数字来工作。这意味着,如果您始终具有相同的 第一个 “随机”数,并且使用相同的伪随机数生成器来生成第二个,那么您也将始终具有相同的 第二个 “随机”数。
第一个Random构造函数构造一个带有不确定种子(序列中的第一个数字)的伪随机数生成器,因此您几乎总是以不同的“随机”数序列结束。第二个Random构造函数使用所需的 任何种子 构造一个伪随机数生成器,因此,如果给它相同的种子,则将始终获得相同的序列。
这是一个例子。如果创建Random这样的:
Random yourRandom = new Random();
它会从一些种子开始。该种子可能是42、121、3810,无论如何。您永远无法确定何时创建它。它 生成的 所有随机数均基于该种子,因此,由于它几乎总是使用不同的种子,因此您几乎总是从中获得不同的“随机”数。
另一方面,如果您创建Random类似这样的内容:
Random yourOtherRandom = new Random(36);
所有yourOtherRandom生成的数字都将从36开始计算。由于第一个数字(36)是相同的,而第二个数字是从第一个数字计算的,依此类推,yourOtherRandom因此每次运行程序时,生成的所有内容都是相同的。
yourOtherRandom