Eindeutige Zufallszahlen in C# generieren
Bei der Entwicklung von Anwendungen, die zufällige eindeutige Zahlen generieren müssen, stoßen Entwickler häufig auf Probleme mit der System.Random-Klasse. Selbst wenn Sie DateTime.Now.Ticks als Startwert verwenden, kann es dennoch zu doppelten Zahlen kommen.
Problem mit doppelten Werten lösen
System.Random.Next() selbst garantiert nicht die Eindeutigkeit der generierten Zahlen. In Kombination mit einem engeren Bereich (z. B. 0 bis 10) ist die Wahrscheinlichkeit, auf doppelte Werte zu stoßen, höher.
Alternative: Listenpflege
Um diese Einschränkung zu überwinden, besteht ein robusterer Ansatz darin, eine Liste der generierten Zahlen zu führen. Duplikate können vermieden werden, indem überprüft wird, ob die potenzielle Nummer bereits in der Liste vorhanden ist.
Das Folgende ist eine modifizierte Implementierung, die diese Strategie verwendet:
<code class="language-csharp">public Random a = new Random(); public List<int> randomList = new List<int>(); int MyNumber = 0; private void NewNumber() { MyNumber = a.Next(0, 10); if (!randomList.Contains(MyNumber)) randomList.Add(MyNumber); }</code>
Dieser Ansatz gewährleistet die Erstellung wirklich einzigartiger Werte, indem eine Liste der generierten Zahlen verwaltet und Duplikate herausgefiltert werden.
Das obige ist der detaillierte Inhalt vonWie generiert man sich nicht wiederholende Zufallszahlen in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!