Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。

相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。

第一个构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象。

第二个构造方法可以通过制定一个种子数进行创建。

从运行结构来看,如果连个Random对象的种子相同,而且方法的调用顺序也相同,则它们会产生同样的数字序列,也就是说,Random产生的不是真正的随机数,而是伪随机数。为了避免两个Random对象产生同样的数字序列,我们可以使用当前时间作为种子Random r=new Random(System.currentTimeMillis());