1. 程式人生 > >產生隨機數的三種方式

產生隨機數的三種方式

pan blog color gpo class src 9.png exti ron

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

運行結果:

技術分享圖片

產生隨機數的三種方式