文章出處

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的分布


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()