Heim > Backend-Entwicklung > C++ > Wie generiert man in C# wirklich eindeutige Zufallszahlen?

Wie generiert man in C# wirklich eindeutige Zufallszahlen?

DDD
Freigeben: 2025-01-21 13:01:14
Original
219 Leute haben es durchsucht

How to Generate Truly Unique Random Numbers in C#?

Effektive Möglichkeit, eindeutige Zufallswerte in C# zu generieren

Das Generieren eindeutiger Zufallszahlen ist in vielen Programmierszenarien eine häufige Anforderung. Die Verwendung der Standardklasse System.Random garantiert jedoch keine Eindeutigkeit, insbesondere wenn der Bereich klein ist.

Einschränkungen von Random.Next()

Die Methode

Random.Next() ist nicht darauf ausgelegt, eindeutige Werte innerhalb eines bestimmten Bereichs zu generieren. Es generiert eine zufällige Ganzzahl innerhalb des angegebenen Bereichs und kann doppelte Zahlen erzeugen, insbesondere wenn der Bereich klein ist.

Saatwert verwenden

Die Verwendung eines Startwerts wie DateTime.Now.Ticks.GetHashCode() ist eine gängige Methode zur Verbesserung der Random-ähnlichen Zufälligkeit. Allerdings wird dadurch die Möglichkeit der Generierung doppelter Nummern immer noch nicht ausgeschlossen.

Bessere Lösung

Anstatt sich auf Random.Next() zu verlassen, sollten Sie die folgende Methode zum Generieren eindeutiger Zufallszahlen in Betracht ziehen:

<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>
Nach dem Login kopieren

Diese Methode verwendet HashSet, um den generierten Wert zu speichern. Die Methode GetUniqueNumber generiert wiederholt Zufallszahlen, bis ein eindeutiger Wert innerhalb des angegebenen Bereichs gefunden wird. Dies stellt die Einzigartigkeit sicher, während die Klasse Random weiterhin verwendet wird.

Das obige ist der detaillierte Inhalt vonWie generiert man in C# wirklich eindeutige Zufallszahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage