Java: Wie kann ich erreichen, dass keine doppelten Zahlen ausgegeben werden?

3 Antworten

Am einfachsten geht es wie folgt:

Erstelle eine Liste aller möglichen Zahlen, und dann nimm 6 zufällige Zahlen raus.

Sind 3 Zeilen Code:

int[] result = new int[6];
List<Integer> possibleNumbers = IntStream.range(1, 50).boxed().collect(Collectors.toList());
for (int i = 0; i < 6; i++) result[i] = possibleNumbers.remove((int)(Math.random() * possibleNumbers.size()));
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

   feld [0] = (int)(Math.random() * 49) + 1;

also erstmal die zufalls zahl ermitteln , die zwischen speichern .

dann gucken ob sie im array vorkommt .

wenn NEIN dann an freier (letzte freie position) speichern , darauf achten das nach array größe auch schluss ist .

kann man also z.b. mit einer while schleife und entsprechenden bedingungen gut umsetzen.

hier mal eine möglichkeit , die kann man natürlich noch kompeltt optimieren , aber für den anfang ist es einfacher , schritt für schritt zu lernen .

pseudocode :

neuestelle = 0;
zufallzahlerzeugen = true;
while(zufallzahlerzeugen) {
  meinezufallszahl = (int)(Math.random() * 49) + 1;
  /* hier entweder eine array suchfunktion oder via for schleife arbeiten ) */
  zufallgefunden = false;
  for (i=0 ; i < array.length; i++) {
    if (array[i] == meinezufallszahl) {
       zufallgefunden = true;
    }
  }
  if ( !zufallgefunden) { /* ! negiert die aussage so ds wir nur was machen wenn keine zufallszahl gefunden wurde */
      array[neuestelle] = meinezufallszahl;
      ++neuestelle;
  }
  if (neuestelle == array.length ) {
      zufallzahlerzeugen = false;
  }
}

Du schreibst eine Schleife.

Ist die ermittelte Zufallszahl nicht im Array vorhanden, wird diese zum Array hinzugefügt, bis das Array voll ist.