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

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

Barbara Streisand
發布: 2025-02-03 08:31:09
原創
594 人瀏覽過

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

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

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

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

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

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

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

>

這是更正的Random函數:

RandomNumber通過使用單個

實例並與
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);
    }
}
登入後複製
>同步訪問,RNG將保持其內部狀態,在循環中的每個呼叫上產生獨特的隨機數。

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板