产生随机数的三种方式

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());
        }
}

运行结果:

原文地址:https://www.cnblogs.com/nancyzhang/p/8496442.html