产生随机数的三种方式
1. java.util.Random
java.util.Random类提供了以下产生随机数的方法:
(1) 通过Random() 构造方法实例化的对象产生随机数
Random r=new Random();
特点:每次运行产生的随机数都不一样。
(2) 通过Random(long seed) 构造方法实例化的对象产生随机数
Random r=new Random(long seed);
特点:seed相同产生的随机数相同,不同seed之间产生的随机数也不同。
举例:
public void testRandom(){ Random r=new Random(); Random r5=new Random(5); Random r10=new Random(10); List<Integer> list=new ArrayList<Integer>(); list.clear(); System.out.println("1. 利用Random()构造函数产生的随机数:"); for(int i=0;i<10;i++) { list.add(r.nextInt(100)); } System.out.println(list); System.out.println(""); list.clear(); System.out.println("2. 利用Random(5)构造函数产生的随机数:"); for(int i=0;i<10;i++) { list.add(r5.nextInt(100)); } System.out.println(list); System.out.println(""); list.clear(); System.out.println("3. 利用Random(10)构造函数产生的随机数:"); for(int i=0;i<10;i++) { list.add(r10.nextInt(100)); } System.out.println(list); }
运行结果:
第一次运行上述代码的结果如下:
第二次运行上述代码的结果如下:
第三次运行上述代码的结果如下:
由以上三次运行的结果不难发现:
1) 利用Random() 构造函数实例化的对象产生的随机数每次都不一样。
2) 利用Random(long seed) 构造函数实例化的对象产生的随机数每次都一样。
3) seed即种子数,不同seed之间产生的随机数也不同。
由此可见:虽然说是随机数,但是也不是随机产生的,还是按照某种算法一步步执行产生的数,所以才会有种子数不变在不同时刻产生的值一样的结论。
2. Math.random()
Math.random() 产生的是[0,1.0)的随机小数。
举例:
public void testMathRandom(){ System.out.println("利用Math.random()产生的随机数:"); for(int i=0;i<10;i++) { System.out.println(Math.random()); } }
运行结果: