Random.nextint() 和Math.random()的區別


Random.nextint() 和Math.random()的區別

Java代碼   收藏代碼
  1.         Random rand = new Random();  
  2.         long startTime = System.nanoTime() ;  
  3.         int i1 = rand.nextInt(1000000000);  
  4.         System.out.println(i1);  
  5.         long endTime = System.nanoTime();  
  6.         System.out.println("Random.nextInt(): " + (endTime - startTime));  
  7.   
  8.         long startTime2 = System.nanoTime();  
  9.         int i2 = (int) (java.lang.Math.random() * 1000000000);  
  10.         System.out.println(i2);  
  11.         long endTime2 = System.nanoTime();  
  12.         System.out.println("Math.random():" + (endTime2 - startTime2));  



前者生成的隨機數效率高於后者,時間上前者大約是后者50%到80%的時間.

造成這個原因如下:
Math.random()是Random.nextDouble()的一個內部方法.
Random.nextDouble()使用Random.next()兩次,均勻的分布范圍為0到1 - (2 ^ -53).


Random.nextInt(n)的使用Random.next()不多於兩次, 返回值范圍為0到n - 1的分布


免責聲明!

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



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