Zufallszahlen in C# generieren ohne Wiederholung?

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.


mrdck 
Fragesteller
 17.11.2017, 19:03

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?

0
PeterKremsner  17.11.2017, 19:09
@mrdck

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.

1
mrdck 
Fragesteller
 17.11.2017, 19:11
@PeterKremsner

kannst du mir evtl. verraten wie ich den inhalt der liste prüfe? verstehe die sachen im internet leider nicht wirklich

0

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.