首頁 >後端開發 >C++ >當 System.Random 失敗時,如何在 C# 中產生唯一的隨機數?

當 System.Random 失敗時,如何在 C# 中產生唯一的隨機數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-21 13:07:12512瀏覽

How Can I Generate Unique Random Numbers in C# When System.Random Fails?

解 C# 中唯一隨機數產生的挑戰

產生唯一的隨機數在許多程式設計任務中至關重要。 然而,C# 的內建 System.Random 類別本身並不能保證唯一性。 正如一位開發人員發現的那樣,這可能會導致重複的數字,即使 Random 實例是在函數外部聲明的。

問題和更好的解決方案:

Random.Next()一起使用的種子並不會直接控制唯一性。 這是一個更有效的策略:

  1. 利用收藏來實現獨特性:

    • 維護一個清單來儲存產生的數字。
    • 在新增新產生的號碼之前,請檢查該號碼是否已存在於清單中。 僅當其唯一時才添加。
    <code class="language-csharp">public Random a = new Random();
    public List<int> randomList = new List<int>();
    int MyNumber = 0;
    private void GenerateUniqueNumber()
    {
        MyNumber = a.Next(0, 10);
        if (!randomList.Contains(MyNumber))
            randomList.Add(MyNumber);
    }</code>
  2. 建立自訂隨機數產生器:

    • 建立自訂產生器以確保定義範圍內的唯一性。 這需要仔細考慮邊緣情況並優化性能。

探索替代庫:

幾個替代方案提供了改進的隨機數產生:

  • RandomNumberGenerator 一個更加密安全的選項。
  • Guid.NewGuid(): 產生全域唯一識別碼 (GUID),適用於順序唯一性不重要的情況。
  • System.Numerics.Tensors內的生成器:為各種分佈提供隨機取樣方法。

最佳方法取決於應用程式的需求、效能限制和所需的隨機性等級。

以上是當 System.Random 失敗時,如何在 C# 中產生唯一的隨機數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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