[Java] Random() gleiche Zahlen verhindern?

2 Antworten

Müsste in etwa so aussehen:

int[] numbers = new int[6];
for(int i=0; i<numbers.length; i++)
{
    boolean alreadyExists = false;
    int random;
    do{
    	random = (int)(Math.random()*48)+1;
    	for(int n : numbers){
    		alreadyExists = n==random ? true : alreadyExists;
    	}
        //oder// for(int n:numbers)if(n==random)alreadyExists=true;
   }while(alreadyExists);
   numbers[i] = random;
}

~Tim

Du musst Dir die Zahlen, die bereits gezogen wurden, merken. Bei 6 aus 49 ist das relativ einfach. Mach ein int[6]-Array für die gezogenen Zahlen. Wenn Du eine Zahl für Index i (0 <= i <= 5) gefunden hast, trage sie im Array ein und erhöhe i.

Nachdem Du eine Zufallszahl für Index i ermittelt hast (und bevor Du sie einträgst), prüfe im Array an den Positionen 0 bis i-1, ob dort die Zahl bereits vorhanden ist. Wenn ja, ermittle eine neue Zufallszahl und prüfe erneut.

Der Algorithmus wäre also wiefolgt

  1. i = 0
  2. Ermittle Zufallszahl z
  3. Ist z bereits im Array vorhanden?
  4. Ja, gehe zu 2
  5. Trage z in Array ein
  6. erhöhe i
  7. Ist i < 6 gehe zu 2