Ich fülle mein Array mit Zufallszahlen, dabei ist es wichtig, dass jede Zufallszahl nur einmal dran kommt. Nun hab ich, mit Hilfe von einigen Personen aus diesem Forum folgenden Kontrollmechanismus erstellt:
So. Jetzt prüft er jede generierte Zahl die bei A entsteht unter B. Falls die Zahl doppelt ist wird eine neue erstellt (C) und die Suche wird von neu gestartet (D).
So weit so gut. Doch da ist ein kleiner Fehler drin, sodass es trotzdem zu doppelten Zahlen kommt. Wenn man nun 20 Zahlen generiert die jewals von 1-20 reichen, müsste jede Zahl nur einmal vorkommen. Leider kommt bei 10 maligem Aufrufen dieses Algorithmus mindestens 50% mit doppelten Zahlen.
Aber wenn ich um die innere Schleife noch eine Schleife bis ca 5 laufen lasse, habe ich keine doppelten Werte mehr. Aber dafür auch mehr rechen Arbeit, die ich gerne vermeiden würde.
Code:
//Die Methode holeZZ() generiert eine Zufallszahl
for (int i = 0; i < intgesam.length; i++) {
intgesam[i] = holeZZ(); // A
for (int j = 0; j < intgesam.length; j++) {
if (intgesam[i] == intgesam[j] && i != j) { // B
intgesam[i] = holeZZ(); // C
j = 0; // D
}
}
}
So weit so gut. Doch da ist ein kleiner Fehler drin, sodass es trotzdem zu doppelten Zahlen kommt. Wenn man nun 20 Zahlen generiert die jewals von 1-20 reichen, müsste jede Zahl nur einmal vorkommen. Leider kommt bei 10 maligem Aufrufen dieses Algorithmus mindestens 50% mit doppelten Zahlen.
Aber wenn ich um die innere Schleife noch eine Schleife bis ca 5 laufen lasse, habe ich keine doppelten Werte mehr. Aber dafür auch mehr rechen Arbeit, die ich gerne vermeiden würde.