文章出處
文章列表
Random.nextint() 和Math.random()的區別
- Random rand = new Random();
- long startTime = System.nanoTime() ;
- int i1 = rand.nextInt(1000000000);
- System.out.println(i1);
- long endTime = System.nanoTime();
- System.out.println("Random.nextInt(): " + (endTime - startTime));
- long startTime2 = System.nanoTime();
- int i2 = (int) (java.lang.Math.random() * 1000000000);
- System.out.println(i2);
- long endTime2 = System.nanoTime();
- 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的分布
文章列表
全站熱搜