首頁 >後端開發 >C++ >為什麼我的隨機數發生器只會產生一個唯一的數字?

為什麼我的隨機數發生器只會產生一個唯一的數字?

Barbara Streisand
Barbara Streisand原創
2025-02-03 08:31:09597瀏覽

Why Does My Random Number Generator Only Produce One Unique Number?

>故障排除一個隨機數生成器,生成重複的數字

儘管使用循環,但您的隨機數生成器(RNG)似乎僅生成一個唯一的數字。 調試在循環執行過程中揭示了不同的數字,但是完成後,所有數組元素都具有相同的值。

問題源於在每個環路迭代中創建一個新的

實例。 由於通常使用系統時鐘播種Random,因此迅速執行的循環可能會反復初始化具有相同種子的對象,從而導致相同的輸出。 Random解決方案:一個共享的實例Random

修復程序涉及在所有調用中使用單個靜態

實例。這樣可以確保一致的狀態更新並防止重複的種子價值。 為了安全地處理多線程的方案,使用鎖來同步訪問。

>

這是更正的Random函數:

RandomNumber通過使用單個

實例並與
<code class="language-csharp">private static readonly Random random = new Random();
private static readonly object syncLock = new object();

public static int RandomNumber(int min, int max)
{
    lock (syncLock) { // Thread-safe access
        return random.Next(min, max);
    }
}</code>
>同步訪問,RNG將保持其內部狀態,在循環中的每個呼叫上產生獨特的隨機數。

以上是為什麼我的隨機數發生器只會產生一個唯一的數字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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