Zufallszahlen in C# generieren ohne Wiederholung?
Hallo, unzwar muss ich zufallszahlen erzeugen, welche sich nicht wiederholen. Ich bin noch neu mit C# und komme leider noch nicht so gut damit klar. Habe im Netz verschiedene Möglichkeiten gefunden, wie z.B. eine Liste zu "mischen" oder einfach Zufallszahlen generieren, diese in einem Array speichern und anschließend immer prüfen ob die Zahl schon funktioniert. Ich weiß zwar wie man es theoretisch machen könnte, jedoch leider nicht wie ich das ganze umsetzen kann.
Ich habe z.B. das hier gefunden, weiß aber leider nicht wie ich das ganze in meinen Code einbauen kann. https://www.mycsharp.de/wbb2/thread.php?threadid=36885
2 Antworten
Du kannst eine Klasse erstellen, welche als Methode die Shuffle Funktion aus dem Snippet enthält.
Klasse instanzieren und dann mit der Shuffle Funktion die Zufallszahlen holen.
Die Frage bei solchen Sachen ist aber wie viele Zufallszahlen willst du ohne Wiederholung ziehen?
Wenns 10 Zahlen sind ist die Wahrscheinlichkeit äußerst gering, dass dir die C# Rand Funktion eine Zahl mehrmals liefern wird, sofern deine Zufallszahlen hinreichend viele Bit haben.
Ja richtig.
Wie viele Bit sollen deine Zufallszahlen haben, bzw in welchem Bereich sollen diese liegen.
Bei 32 Zufallszahlen kannst du aber auch einfach in einer List alle gezogenen Zahlen eintragen und nach dem ziehen einer neuen Zahl prüfen ob diese bereits in der Liste ist, wenn ja nochmal ziehen, wenn nein Eintragen und die Zahl zurückgeben.
kannst du mir evtl. verraten wie ich den inhalt der liste prüfe? verstehe die sachen im internet leider nicht wirklich
Verwende die List Klasse in C#. Die hat die Methode BinarySearch, die gibt eine negative Zahl zurück wenn der Wert nicht in der Liste vorhanden ist.
https://msdn.microsoft.com/de-de/library/w4e7fxsh(v=vs.110).aspx
Ich würde mir mit Enumerable.Range(...) ne Liste mit allen möglichen Zahlen erzeugen und dann immer nur eine Zufallszahl die index der Liste sein kann erzeugen. Die Zahlen die du schon hattest haust du immer gleich aus der Liste raus.
ich brauche 32 zufällige zahlen.. der gesamte obere Teil kommt ja sozusagen in eine eigene class. und das beispiel unter dem kommentar in die main funktion oder nicht?