Zufällige Zahlenreihe mit wiederholenden Zahlen
-
Hallo!
Mein Problem ist, dass die Zahlen in der Zahlenreihe zwar zufällig aus einem bestimmten Bereich ausgewählt werden, aber die Einträge sind teilweise doppelt und dreifach...
Hat jemand eine Idee wie ich das korrigieren kann?
Mein
static void CreateZufallsListe() { int[] intArray = new int[100]; Random rnd = new Random(); for (int i = 1; i <= intArray.Length; i++) { System.Console.Write(i + "\t"); intArray[i] = rnd.Next(0, 100); System.Console.Write(intArray[i] + "\n"); } }
Danke im Voraus!
-
-
Hab ich ausprobiert...(den Code übernommen)
Klappt leider nicht so wie ich das möchte
Es gibt immernoch mehrere gleiche Zahleneinträge im Array.
-
// Funktioniert dieser Code, hat ihn Dirk Schmidt (http://schmidt-webdesign.net) geschrieben. // Funktioniert er nicht, ist der Autor unbekannt. using System; using System.Collections.Generic; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { int anzahlZiffern = 10; List<int> liste = CreateZufallsListe(anzahlZiffern); for (int i = 0; i < anzahlZiffern; i++) Console.Write("{0} ", liste[i]); Console.ReadKey(); } private static List<int> CreateZufallsListe(int p) { int i = 0; int maxZiffern = 200; // Zufallszahlenbereich hier 1-200 List<int> lst = new List<int>(); Random r = new Random(); while (i != p) { int zahl = r.Next(maxZiffern) + 1; for (int n = 0; n < i; n++) if (zahl == (int)lst[n]) { zahl = r.Next(maxZiffern) + 1; continue; } lst.Add(zahl); ++i; } return lst; } } }
^Erst wenn alle Programmierer eingesperrt und alle Ideen patentiert wurden, werdet ihr merken, dass Juristen nicht programmieren können …^
-
Nach langer Recherche im Internet habe ich meinen Code zu diesem hier geändert:
static int[] CreateZufallsListe() { int[] array = new int[100]; for (int i = 0; i < array.Length; i++) { array[i] = i+1; } Random random = new Random(); for (int i = array.Length; i > 1; i--) { int j = random.Next(i); int temp = array[j]; array[j] = array[i - 1]; array[i - 1] = temp; } }
Quelle: http://www.dotnetperls.com/fisher-yates-shuffle
Danke für eure Bemühung
-
DaBaer schrieb:
Nach langer Recherche im Internet habe ich meinen Code zu diesem hier geändert:
static int[] CreateZufallsListe() { int[] array = new int[100]; for (int i = 0; i < array.Length; i++) { array[i] = i+1; } Random random = new Random(); for (int i = array.Length; i > 1; i--) { int j = random.Next(i); int temp = array[j]; array[j] = array[i - 1]; array[i - 1] = temp; } }
Quelle: http://www.dotnetperls.com/fisher-yates-shuffle
Danke für eure Bemühung
ich kriege immernoch doppelte werte mit deiner lösung. das programm von schmidt funzt besser, mit anzahlZiffern=100 und maxZiffern=99 habe ich 100 zufällige werte ohne einen doppelten.
-
Wenn man den Code in dem Beispiel von Th69 verstanden hat, funktioniert der auch wunderbar und ist dazu noch schneller als alle anderen hier gezeigten Lösungen ...