Java随机数的产生方式
在Java中,随机数的概念从广义上将,有三种。
1、通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。
2、通过Math.random()返回一个0到1之间的double值。
3、通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大。
java.util.Random类来产生一个随机数发生器。它有两种形式的构造函数,分别是Random()和Random(long seed)。
Random()此构造方法将随机数生成器的种子设置为某个值,该值与此构造方法的所有其他调用所用的值完全不同(网上有文章说是采用System.currentTimeMillis()作为种子,实测不确定,或许不是简单的用当前时间)。
Random(long seed)使用指定的seed作为发生器的种子。相同的种子产生相同的随机数。
随机数发生器(Random)对象产生以后,通过调用不同的method:nextInt()、nextLong()、nextFloat()、nextDouble()等获得不同类型随机数。
1 public static void main(String[] args) 2 { 3 for (int i = 0; i < 10; i++) 4 { 5 Random rand = new Random(); 6 System.out.println("随机数" + i + ": " + rand.nextInt()); 7 System.out.println("Time: " + System.currentTimeMillis()); 8 } 9 }
打印结果可以看出,在相同的时间生成的随机数并不相同:
随机数0: 428923238
Time: 1446719287485
随机数1: -1644891094
Time: 1446719287485
随机数2: -2063294173
Time: 1446719287485
随机数3: -220798588
Time: 1446719287485
随机数4: -1036960660
Time: 1446719287485
随机数5: -2027516416
Time: 1446719287485
随机数6: 705879658
Time: 1446719287485
随机数7: 388111823
Time: 1446719287485
随机数8: 1685942599
Time: 1446719287485
随机数9: -1417505914
Time: 1446719287485