在 Java 中,Random 類別提供了一種產生偽隨機數的方法。透過指定種子作為參數,可以控制產生的數字序列。然而,當重複使用相同的種子時,就會出現問題,導致相同的數字序列。
偽隨機數產生器(PRNG) 是一種產生偽隨機數的演算法看似隨機但實際上由一小組初始值(稱為種子)確定的數字序列。透過指定種子,PRNG 每次都會產生相同的數字序列。
要解決相同輸出的問題,有必要了解種子的工作原理在 PRNG 中。在 Java 中,當使用種子參數呼叫 Random 類別時,它會為將來的呼叫保留相同的狀態,從而導致相同的數字序列。
要產生不同的序列,建議呼叫零參數Random 的建構函數,它使用系統 nanotime 作為種子。這可確保每次呼叫方法時使用不同的種子。
以下修正後的Java 程式碼使用零參數建構函式產生不同的隨機數序列:
private Random generator = new Random(); double randomGenerator() { return generator.nextDouble() * 0.5; }
透過將Random 實例移到方法之外並使用系統nanotime 作為種子,此程式碼消除了相同輸出的問題並產生不同的隨機數序列。
以上是為什麼在 Java 中使用種子時總是得到相同的隨機數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!