java.util.Random深入理解


java.util.Random

next方法的原理

比較好的參考文檔:

http://isky001.iteye.com/blog/1339979

 

package random.utilrandom;

import java.util.Random;

public class TestRandom {
    public static void main(String[] args) {
        Random ran1 = new Random(10);
        System.out.println("使用種子為10的Random對象生成[0,10)內隨機整數序列: ");
        for (int i = 0; i < 10; i++) {
            System.out.print(ran1.nextInt(10) + " ");
        }
        System.out.println();
        Random ran2 = new Random(10);
        System.out.println("使用另一個種子為10的Random對象生成[0,10)內隨機整數序列: ");
        for (int i = 0; i < 10; i++) {
            System.out.print(ran2.nextInt(10) + " ");
        }
        Random ran3 = new Random(10);
        System.out.println("使用另一個種子為10的Random對象生成[0,10)內隨機整數序列: ");
        for (int i = 0; i < 10; i++) {
            System.out.println(ran3.nextInt());
        }
        System.out.println();
        Random ran4 = new Random(10);
        System.out.println("使用另一個種子為10的Random對象生成[0,10)內隨機整數序列: ");
        for (int i = 0; i < 10; i++) {
            System.out.println(ran4.nextInt());
        }
    }
}

 

Math.random()本質上是調用RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();即是java.util.Random.nextDouble()

還有一個講解線性同余公式的文章很不錯

http://www.cnblogs.com/xkfz007/archive/2012/03/27/2420154.html

再來一個英文文檔解釋nextseed = (oldseed * multiplier + addend) & mask; 

http://en.wikipedia.org/wiki/Linear_congruential_generator


免責聲明!

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



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