| 

.NET C# Java Javascript Exception

2
Servus zusammen,
ich habe eine Frage zu dem angegebenen Quellcode...
und zwar zu der folgenden Codezeile/Befehl ** gezogen[lottozahlen-1] == false **
Wenn ich jetzt 5 Zahlen gezogen habe,dann ist die 6 gezogen Zahl mit der 2 die bereits
gezogen wurde gleich...also ist die Befehlszeile true und es wird nochmals eine Zahl gezogen...
Meine Frage lautet:
Diese Ausdruck ** gezogen[lottozahlen-1] ** muss dann ja als Vergleicher funktionieren...Wie kann ich mir das denn vorstellen???
D.h. wenn eine neue Zahl gezogen wurde muss dieser die immer mit den voherigen vergleichen die bereits gezogen wurden...Ich kann mir das leider nicht so richtig vorstellen wie das
aussieht wenn das im Hintergrund des Programms verglichen wird...kann mir das mal einer
im Detail erklären???

******************************************************************************************
import java.util.Random;

public class Ziehung {

public static void main(String[] args) {
int[] lottozahlen = new int[6];
boolean[] gezogen = new boolean[49];

Random zufallszahlen = new Random();

int i = 0;

do
{
lottozahlen = zufallszahlen.nextInt(49)+1;

if ( gezogen[lottozahlen-1] == false){
gezogen[lottozahlen-1] = true;
i++;
}

} while(i < lottozahlen.length);

for(int n = 0; n < lottozahlen.length; ++n){
System.out.println( (n+1)+
" . Zahl " +
lottozahlen[n]);
}
}

}
******************************************************************************************
Danke für eure Mithilfe
Servus
Snowleopard
News:
07.10.2017
1 Antwort
0
Eigentlich ist es ganz einfach. In dem boolschen Array gezogen wird vermerkt, welche der 49 Lottozahlen bereits gezogen wurden. Der Index in dieses Array ist die gezogene Zahl, welche im Array lottozahlen an der Position i - 1 steht (- 1, weil Arrays immer 0-basiert sind). Wenn die Zahl bereits generiert wurde, wird der Zähler i nicht erhöht, solange die Random-Funktion den selben Wert zurückliefert. Dadurch wird die nächste generierte Zahl wieder an die selbe Position im Array lottozahlen geschrieben. Damit ist sichergestellt, das jede gezogene Zahl nur einmal vorkommt.
08.10.2017
luedi 2,0k 1 9

Stelle deine --Frage jetzt!