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()); } }
運行結果: