Random Zahlen sollen nicht doppelt sein! |
| 26.02.2016, 11:29 | Auf diesen Beitrag antworten » | |||||||||||||||
| RavenPixel | Random Zahlen sollen nicht doppelt sein! Hallo, ich habe nun gestartet ein Spiel zu programmieren (Mastermind, wenn das noch jemand kennt). Doch gleich zu Anfang kommt ein Problem, dass die Zahlen, die unten als Zahlencode (später sollen es Farben werden) über ein array mit Zufallszahlen gefüllt werden, oftmals eine doppelte Zahl enthalten. Dies soll verhindert werden, sodass in den 6 Plätzen eindeutige und einmalige Zahlen von 0-9 stehen. Wie bekomme ich das hin? Hab schon einiges versucht, aber bin auf keinen Nenner gekommen. Danke schon im Vorraus. |
|||||||||||||||
|
|
||||||||||||||||
| 26.02.2016, 11:36 | Auf diesen Beitrag antworten » | |||||||||||||||
| eulerscheZahl | Natürlich kenne ich Mastermind. 2 Möglichkeiten: die intuitive: speichere in einem bool Array, was schon drankam. Nimm die neue Zahl nur, wenn sie noch nicht verwendet wurde die effizientere: Schreibe die Zahlen von 0-9 in ein Array:
Würfle eine Zahl von 0-9, das ist der Arrayindex. Tausche die Zahl mit der an Stelle 9: Beispiel 3:
Die 3 ist jetzt fest. Würfle jetzt von 0-8 und tausche mit der Zahl an Stelle 8 (Beispiel: 5)
Auf die Weise kriegst du am Ende des Arrays Zufallszahlen, die sich nicht wiederholen. |
|||||||||||||||
| 26.02.2016, 11:44 | Auf diesen Beitrag antworten » | |||||||||||||||
| RavenPixel | Ich habe bereits ein array eingebaut, dabei ist das problem dann, dass ich diesen halt Random r = new Random(); zugewiesen habe und diese in einer for-Schleife besetzt habe... for (int i = 0; i < zahl.Length; i++) { zahl[i] = r.Next(Min, Max); } Deshalb dachte ich, dass ich diese damit direkt sortieren kann... |
|||||||||||||||
| 26.02.2016, 11:47 | Auf diesen Beitrag antworten » | |||||||||||||||
| eulerscheZahl | Jetzt willst du die Zufallszahlen auch noch sortiert haben? Der Codeausschnitt ist C#, oder? |
|||||||||||||||
| Anzeige | ||||||||||||||||
|
|
||||||||||||||||
| 26.02.2016, 11:48 | Auf diesen Beitrag antworten » | |||||||||||||||
| RavenPixel | So hatte ich es zumindest vor, jedes spiel sollte ja einen neuen zahlencode bekommen.. ja es ist c#, hatte ich wohl vergessen zu sagen |
|||||||||||||||
| 26.02.2016, 11:52 | Auf diesen Beitrag antworten » | |||||||||||||||
| eulerscheZahl | Sowas?
|
|||||||||||||||
| 26.02.2016, 11:57 | Auf diesen Beitrag antworten » | |||||||||||||||
| RavenPixel | Ist es in diesem Fall normal, dass die Zahlen immer aufsteigend sind? Also die kleinste Zahl am Anfang und die Größte am Ende? |
|||||||||||||||
| 26.02.2016, 11:59 | Auf diesen Beitrag antworten » | |||||||||||||||
| eulerscheZahl | Du hast etwas von Sortieren geschrieben. Wenn du die Reihenfolge zufällig haben willst, lösche das OrderBy wieder raus. |
|||||||||||||||
| 26.02.2016, 12:03 | Auf diesen Beitrag antworten » | |||||||||||||||
| RavenPixel | ach entschuldige... hab nicht richtig nachgedacht und falsch formuliert.... wollte wissen wie ich es innerhalb oder außerhalb der schleife direkt verhindern kann, dass eine zahl doppelt vorkommt. das war gemeint, nicht sortieren, sry |
|||||||||||||||
| 26.02.2016, 12:11 | Auf diesen Beitrag antworten » | |||||||||||||||
| eulerscheZahl | Ich habe ein HashSet verwendet. Das stellt sicher, dass jede Zahl nur einmal vorkommt. Wenn du mit der Minimalzahl von Random.Next() auskommen willst, nimm das:
|
|||||||||||||||
| 26.02.2016, 13:04 | Auf diesen Beitrag antworten » | |||||||||||||||
| RavenPixel | Vielen Dank, jetzt hat es funktioniert
|
|||||||||||||||
| 09.03.2016, 17:04 | Auf diesen Beitrag antworten » | |||||||||||||||
| progger | Das leute schon spiele programmieren . Geil
Ich bin schon mit den Grundlagen überlastet |
|||||||||||||||
|
|
Verwandte Themen
| Die Beliebtesten » |
|
| Die Größten » |
|
| Die Neuesten » |
|
