[Java] Random() gleiche Zahlen verhindern?
Hallo Leute,
arbeite gerade an einem Lotto Programm und wollte nun die 6 Zahlen mit Random() generieren lassen jedoch kommt es einige male vor das die gleiche Zahlen vorkommen. Wie kann ich dies verhindern ? Habe mir schon mehrere Videos angeguckt jedoch finde ich nicht das was ich benötige.
Danke im Vorraus
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
- i = 0
- Ermittle Zufallszahl z
- Ist z bereits im Array vorhanden?
- Ja, gehe zu 2
- Trage z in Array ein
- erhöhe i
- Ist i < 6 gehe zu 2