Math.Random和java.util.Random區別


此處只做結論性記錄,不做具體分析。

Random有兩個構造器,有參和無參:

#有參構造器
Random random = new Random(seed);
通過有參構造器創建的random生成的隨機數是通過傳入的種子通過特定的算法計算出來的,所以多次運行返回的隨機數總是一樣的順序
public class test {
public static void main(String[] args) {
Random random = new Random(50);
for (int i=0;i<5;++i){
System.out.println(random.nextInt(5));
}
}
}
如上代碼多次運行返回結果總是:
2
3
3
2
1

#無參構造器

無參構造器內部也是調用的有參構造器,只是種子是通過系統當前時間計算出來的一個long型數據,所以多次運行結果都不一樣
public Random() {
this(seedUniquifier() ^ System.nanoTime());
}

Math.Random返回[0,1)范圍的double類型數據

內部也是調用的Java.util.Random無參構造器實現的

    public static double random() {
        return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
    }

    private static final class RandomNumberGeneratorHolder {
        static final Random randomNumberGenerator = new Random();
    }

區別也就一目了然了。


免責聲明!

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



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