在Java中我们可以通过创建Random类的对象来获得伪随机数,不带参数创建的Random对象会利用当前时间作为随机数生成器的“种子数”,从而生成不同的随机数。
Random random = new Random();
for (int i = 0; i < 10; i++) {
System.out.print(random.nextInt(100)+" ");
}
输出结果:
60 38 60 89 35 17 71 49 15 9
如果我们在创建Random对象时给予一个“种子数”,也就是带参创建Random对象。那么,相同“种子数”的Random对象,相同次数生成的随机数是完全相同的。
Random r1= new Random(47);
Random r2= new Random(47);
for (int i = 0; i < 10; i++) {
System.out.print(r1.nextInt(100)+"="+r2.nextInt(100)+" ");
}
输出结果:
58=58 55=55 93=93 61=61 61=61 29=29 68=68 0=0 22=22 7=7
除了nextInt()方法,我们还可以通过调用random对象中的其他方法来获取不同的伪随机数。
nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
nextLong():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。
nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的 double值。
nextFloat():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布float值。
nextBoolean():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值。
种子数
由于Random类中实现的随机数算法是伪随机,也就是有规则的随机,我们提供给Random类中的随机数生成器的起源数字就是“种子数”,随机数生成器通过在“种子数”基础上进行一定的变换,从而产生需要的随机数。