」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼在 Java 中使用相同的種子時會得到相同的隨機數?

為什麼在 Java 中使用相同的種子時會得到相同的隨機數?

發佈於2024-11-09
瀏覽:468

Why do I get identical random numbers when using the same seed in Java?

具有固定種子的Java隨機數:為什麼輸出相同?

在您的程式碼中,您定義了一種使用以下命令產生隨機數的方法指定的種子。但是,您會注意到,當您提供相同的種子時,所有 100 個產生的數字都是相同的。

此行為是預期的,因為在 Random 建構函式中使用相同的種子會產生可預測的數字序列。種子是初始化隨機數產生器的種子值。這是測試的一個重要功能,因為它可以在重新運行測試時獲得一致的結果。

理解偽隨機數產生

偽隨機數產生器 (PRNG),如 Java 中的 Random產生接近真實隨機性的序列。然而,它們有一小部分初始值,包括種子,它完全決定了序列。

修復程式碼

要產生不同的隨機數序列,您應該避免每次使用相同的種子。相反,請在方法外部建立 Random 實例,並在不帶參數的情況下對其進行初始化。這個實例將使用 nanoTime 方法產生唯一的種子值。

這是更正後的程式碼:

private Random generator = new Random();
double randomGenerator() {
    return generator.nextDouble() * 0.5;
}

透過此更改,每次呼叫 randomGenerator 方法時都會獲得不同的隨機數序列。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3