Guten Abend liebe Community,
bin noch etwas neu in Java und habe eine Frage zu folgendem Problem:
Wir sollen Lottoziehungen simulieren. Dabei besteht die erste Aufgabe darin 10 Ziehungen mit jeweils 6 Zufallszahlen + Zusatzzahl ausgeben zu lassen. Dabei hatte ich auch kein Problem.
Hier der Quellcode dazu (es wird auch auf Nullen und doppelte Zahlen geprüft):
Die zweite Aufgabe besteht darin, dass 10000 Ziehungen simuliert werden sollen, und dabei gezählt werden soll, wie oft jede Zahl gezogen wurde und wie oft jede Zahl als Zusatzzahl gezogen wurde.
Da habe ich gedacht, dass ich meine Methode "ziehung6Aus49()" aus der Klasse Lottozahlen nur ein wenig abändere:
Ich habe bei der Methode die Ausgabestrings entfernt, da ja keine Ausgabe der eigentlichen Ziehungen mehr stattfinden soll und in der Mainmethode habe ich eine Schleife, die dei Methode 10.000 Mal aufruft.
Jetzt weiß ich leider nicht, wie ich die Zahlen, die gezogen wurden zählen kann und auswerten kann
Habe vllt gedacht, dass es nach der Zuweisung der Zahlen in der Methode geschehen kann und dass dann jeweils ein Zähler für eine Zahl erhöht wird, wenn diesse gezogen wurde.
Würde mich über einige Anregungen sehr freuen. Danke!
Greetz Gaia
bin noch etwas neu in Java und habe eine Frage zu folgendem Problem:
Wir sollen Lottoziehungen simulieren. Dabei besteht die erste Aufgabe darin 10 Ziehungen mit jeweils 6 Zufallszahlen + Zusatzzahl ausgeben zu lassen. Dabei hatte ich auch kein Problem.
Hier der Quellcode dazu (es wird auch auf Nullen und doppelte Zahlen geprüft):
Code:
public class Lottozahlen {
//Bestimmung einer Zufallszahl
public static int zufallszahl() {
java.util.Random zufallszahlen = new java.util.Random(); // Erzeugt das Objekt 'zufallszahlen' zur Bestimmung von Zufallszahlen
int zufallszahlenint = zufallszahlen.nextInt(50); // Liefert die nächste positive Integer-Zahl im Intervall von 0 bis 49 (Intervall startet bei 0, daher muss der Wert 50 sein, um 49 mögliche Zufallszahlen generieren zu können
return zufallszahlenint;
}
//Methode zum bestimmen der sechs Zufallszahlen, sowie der Zusatzzahl
public static void ziehung6Aus49() {
int zufallszahlenArray[] = new int[7]; //Erzeugt ein Integer-Array der Länge 7 (sechs Zufallszahlen + eine Zusatzzahl)
int k = 0; //k ist der Laufparameter der folgenden While-Schleife um sechs Zufallszahlen + eine Zusatzzahl zu erzeugen, doppelte Zahlen überprüfen und kein Null bei den erzeugten Zufallszahlen zuzulassen
int zahl; //Variable der Zufallszahlen, die beim Aufrufen der zufallszahl()-Methode erzeugt wird
boolean vorhanden; //Abfragevariable, ob eine Zahl bereits vorhanden(true), oder nicht vorhanden (false) ist
while (k < zufallszahlenArray.length) { //Solange k kleiner als als die Länge des Arrays (=7) ist soll die Schleife durchlaufen werden; die ist nötig für die sechs Zufallszahlen + eine Zusatzzahl
zahl = zufallszahl(); //Mit dem Aufruf der Methode 'zufallszahl()' wird der Variable 'zahl' eine neue Zufallszahl im Intervall von 0 bis 49 zugewiesen
if (zahl > 0) { //Um zu verhindern, dass keine Null gezogen wird soll das überprüfen auf vorhanden/nicht vorhanden sein, sowie das Eintragen erst dann ausgeführt, wenn die Zufallszahl 'zahl' nicht 0 ist
// Prüfen, ob eine bereits gezogenen Zufallszhal schon vorhanden ist
vorhanden = false; //Ausgangswert = nicht vorhanden
for (int i = 0; i < zufallszahlenArray.length; i++) { //
if (zahl == zufallszahlenArray[i]) { //Sobald eine Zufallszahl generiert wurde und dem Zufallszahlenarray an der Stelle i zugewiesen wurde ist diese Zahl bereits vorhanden, womit vorhanden = true folgt. Dies verhindert, dass eine Zahl mehr als einmal in einer Ziehung vorkommen kann
vorhanden = true;
}
}
// Wenn die Zahl nicht vorhanden ist, soll sie eingetragen werden
if (vorhanden == false) { //Wenn die Zahl nicht vorhanden ist, dann...
zufallszahlenArray[k] = zahl; //Dann soll dem Array an der Stelle k die oben erzeugte Zufallszahl zugeordnet werden -> s.o: zahl = zufallszahl();
if (k == (zufallszahlenArray.length - 1)) { //Wenn k=6, dann wird nach der Ausgabe der sechs Zufallszahlen eine Zusatzahl ausgegeben. Dies erfolgt erst dann, wenn vorher die sechse Zufallszahlen erzeugt wurden
System.out.print("\tZusatzzahl:\t" + zufallszahlenArray[k]); //Wenn die Bedingung erfüllt ist (k=6), dann wird die Zusatzzahl am Ende ausgegeben
}
else { //Andernfalls, also für k=0,1,2,3,4 und 5 werden die sechs Zufallszahlen ausgegeben, die vorher mit 'zufallszahlenArray[k] = zahl' in das Array geschrieben wurden ausgegeben
System.out.print(zufallszahlenArray[k] + "\t"); //Gibt die sechs Zufallszahlen für k=0,1,2,3,4, und 5 aus
}
k++; //Nach Durchlauf der While-Schleife wird k um eins erhöht, bis k<7, um die sechs Zufallszahlen und eine Zusatzzahl zu erzeugen
}
}
}
}
public static void main(String[] args) {
//Aufgabe a) Die Zufallszahlen sollen auf dem Bildschirm ausgegeben werden und die Methode ziehung6Aus49() zehn Mal aufgerufen werden
for (int i = 1; i <= 10; i++) { //For-Schleife, damit die Methode zehn Mal aufgerufen wird
System.out.print(i + ". Ziehung: \n"); //Vor jeder Ausgabe der Zufalls- und Zusatzzahlen wird die Überschrift "x. Ziehung" ausgegeben
ziehung6Aus49(); //Die Methode ziehung6Aus49() wird aufgerufen und damit die erzeugten Zufallszahlen, sowie die Zusatzzahl ausgegeben
System.out.print("\n" + "################################################################################" + "\n \n"); //Trenner zwischen den Ziehungen
}
}
}
Die zweite Aufgabe besteht darin, dass 10000 Ziehungen simuliert werden sollen, und dabei gezählt werden soll, wie oft jede Zahl gezogen wurde und wie oft jede Zahl als Zusatzzahl gezogen wurde.
Da habe ich gedacht, dass ich meine Methode "ziehung6Aus49()" aus der Klasse Lottozahlen nur ein wenig abändere:
Code:
public class aufgabe_b {
//Methode zum bestimmen der sechs Zufallszahlen, sowie der Zusatzzahl OHNE Ausgabe der Zufallszahlen und Zusatzzahlen (Abänderung der Methode aus Aufgabenteil a)), da hier 10.000 Ziehungen simuliert werden und die gezogenen Zahlen gezählt werden sollen
public static void ziehung6Aus49OhneAusgabe() {
int zufallszahlenArray[] = new int[7]; //Erzeugt ein Integer-Array der Länge 7 (sechs Zufallszahlen + eine Zusatzzahl)
int k = 0; //k ist der Laufparameter der folgenden While-Schleife um sechs Zufallszahlen + eine Zusatzzahl zu erzeugen, doppelte Zahlen überprüfen und kein Null bei den erzeugten Zufallszahlen zuzulassen
int zahl; //Variable der Zufallszahlen, die beim Aufrufen der zufallszahl()-Methode erzeugt wird
boolean vorhanden; //Abfragevariable, ob eine Zahl bereits vorhanden(true), oder nicht vorhanden (false) ist
while (k < zufallszahlenArray.length) { //Solange k kleiner als als die Länge des Arrays (=7) ist soll die Schleife durchlaufen werden; die ist nötig für die sechs Zufallszahlen + eine Zusatzzahl
zahl = Lottozahlen.zufallszahl(); //Mit dem Aufruf der Methode 'zufallszahl()' wird der Variable 'zahl' eine neue Zufallszahl im Intervall von 0 bis 49 zugewiesen
if (zahl > 0) { //Um zu verhindern, dass keine Null gezogen wird soll das überprüfen auf vorhanden/nicht vorhanden sein, sowie das Eintragen erst dann ausgeführt, wenn die Zufallszahl 'zahl' nicht 0 ist
// Prüfen, ob eine bereits gezogenen Zufallszhal schon vorhanden ist
vorhanden = false; //Ausgangswert = nicht vorhanden
for (int i = 0; i < zufallszahlenArray.length; i++) { //
if (zahl == zufallszahlenArray[i]) { //Sobald eine Zufallszahl generiert wurde und dem Zufallszahlenarray an der Stelle i zugewiesen wurde ist diese Zahl bereits vorhanden, womit vorhanden = true folgt. Dies verhindert, dass eine Zahl mehr als einmal in einer Ziehung vorkommen kann
vorhanden = true;
}
}
// Wenn die Zahl nicht vorhanden ist, soll sie eingetragen werden
if (vorhanden == false) { //Wenn die Zahl nicht vorhanden ist, dann...
zufallszahlenArray[k] = zahl; //Dann soll dem Array an der Stelle k die oben erzeugte Zufallszahl zugeordnet werden -> s.o: zahl = zufallszahl();
//Hier wurde die Ausgabe der Lottoziehungen entfernt
k++; //Nach Durchlauf der While-Schleife wird k um eins erhöht, bis k<7, um die sechs Zufallszahlen und eine Zusatzzahl zu erzeugen
}
}
}
}
public static void main(String[] args) {
//Aufgabe a) Die Zufallszahlen sollen auf dem Bildschirm ausgegeben werden und die Methode ziehung6Aus49() zehn Mal aufgerufen werden
for (int i =1 ; i <= 10000; i++) { //For-Schleife, damit die Methode zehn Mal aufgerufen wird
ziehung6Aus49OhneAusgabe(); //Die Methode ziehung6Aus49() wird aufgerufen und damit die erzeugten Zufallszahlen, sowie die Zusatzzahl ausgegeben
}
for (int j = 1; j <= 49; j++) {
System.out.println("Die " + j + " wurde " + j + " Mal gezogen." );
}
}
}
Jetzt weiß ich leider nicht, wie ich die Zahlen, die gezogen wurden zählen kann und auswerten kann
Habe vllt gedacht, dass es nach der Zuweisung der Zahlen in der Methode geschehen kann und dass dann jeweils ein Zähler für eine Zahl erhöht wird, wenn diesse gezogen wurde.
Würde mich über einige Anregungen sehr freuen. Danke!
Greetz Gaia