首頁 > 後端開發 > C++ > 如何在 C# 中產生真正唯一的隨機數?

如何在 C# 中產生真正唯一的隨機數?

DDD
發布: 2025-01-21 13:01:14
原創
254 人瀏覽過

How to Generate Truly Unique Random Numbers in C#?

C#中產生唯一隨機值的有效方法

在許多程式設計場景中,產生唯一的隨機數是一個常見需求。然而,使用預設的System.Random類別並不能保證唯一性,尤其是在範圍較小的情況下。

Random.Next() 的限制

Random.Next() 方法並非設計用於在給定範圍內產生唯一值。它在指定範圍內產生隨機整數,並且可能產生重複的數字,尤其是在範圍較小的情況下。

使用種子值

使用種子值,例如DateTime.Now.Ticks.GetHashCode(),是提高Random類隨機性的常用方法。但是,它仍然不能消除產生重複數字的可能性。

更優的方案

與其依賴Random.Next(),不如考慮使用以下方法來產生唯一的隨機數:

<code class="language-csharp">public class RandomGenerator
{
    private readonly Random _random;
    private HashSet<int> _uniqueValues;

    public RandomGenerator()
    {
        _random = new Random();
        _uniqueValues = new HashSet<int>();
    }

    public int GetUniqueNumber(int min, int max)
    {
        int randomNumber;
        do
        {
            randomNumber = _random.Next(min, max);
        } while (_uniqueValues.Contains(randomNumber));

        _uniqueValues.Add(randomNumber);
        return randomNumber;
    }
}</code>
登入後複製

這種方法使用HashSet來儲存已產生的數值。 GetUniqueNumber方法會重複產生隨機數,直到在指定範圍內找到一個唯一的值為止。這確保了唯一性,同時仍然使用了Random類別。

以上是如何在 C# 中產生真正唯一的隨機數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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