random函數詳解


1. 隨機函數  Math.random()
  Math.random();    取值范圍是   [ 0.0,1.0 )   的左閉右開區間。具體源代碼如下所示:
  
  
 
  Math.random()是生成0~1之間的小數(double類型的),類似生成的結果如下圖所示:
     
     最上面的兩個圖貼出來的是Math.random()的源代碼,當我們開始直接使用Math.random()的時候,發現進入會判斷random是否為空,如果為空則創建一個Random對象否則直接通過這個random生成一個0 ~ 1 之間的double類型小數。應用案例:
  
 
2. 隨機函數  java.util.Random()

 下面Random()的兩種構造方法:

   Random():創建一個新的隨機數生成器。

   Random(long seed):使用單個 long 種子創建一個新的隨機數生成器。

 我們可以在構造Random對象的時候指定種子,如:Random r1 = new Random(20);或者默認當前系統時間的毫秒數作為種子數:Random r1 = new Random();

具體隨機種子源代碼如下:

  

  需要說明的是:你在創建一個Random對象的時候可以給定任意一個合法的種子數,種子數只是隨機算法的起源數字,和生成的隨機數的區間沒有任何關系。如下面的Java代碼:

  

  初始化時25並沒有起直接作用(注意:不是沒有起作用),rand.nextInt(100);中的100是隨機數的上限,產生的隨機數為0-100的整數,不包括100 --> [0 , 100)

     課外引入:
        產生隨機數函數以及線程池中的一些函數使用的都是System.nanoTime,System.nanoTime提供相對精確的計時,但是不能用他來計算當前日期。 此方法只能用於測量已過的時間,與系統或鍾表時間的其他任何時間概念無關。返回值表示從某一固定但任意的時間算起的毫微秒數
 
具體不同案例對比如下:
<1. 種子相同的隨機數
  
<2. 缺省參數的隨機數
    
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM