產生唯一的隨機數在許多程式設計任務中至關重要。 然而,C# 的內建 System.Random
類別本身並不能保證唯一性。 正如一位開發人員發現的那樣,這可能會導致重複的數字,即使 Random
實例是在函數外部聲明的。
問題和更好的解決方案:
與Random.Next()
一起使用的種子並不會直接控制唯一性。 這是一個更有效的策略:
利用收藏來實現獨特性:
<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>
建立自訂隨機數產生器:
探索替代庫:
幾個替代方案提供了改進的隨機數產生:
RandomNumberGenerator
: 一個更加密安全的選項。 Guid.NewGuid()
: 產生全域唯一識別碼 (GUID),適用於順序唯一性不重要的情況。 System.Numerics.Tensors
內的生成器:為各種分佈提供隨機取樣方法。 最佳方法取決於應用程式的需求、效能限制和所需的隨機性等級。
以上是當 System.Random 失敗時,如何在 C# 中產生唯一的隨機數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!