首頁 >Java >java教程 >為什麼在 Java 中使用種子時總是得到相同的隨機數?

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

Barbara Streisand
Barbara Streisand原創
2024-11-09 13:00:03769瀏覽

Why Do I Keep Getting the Same Random Numbers in Java When Using a Seed?

使用種子產生 Java 隨機數:除錯相同的輸出

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn