具有固定種子的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