Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo muss eine Methode für Lotto Zahlen Ziehung schreiben!! jedoch kommt immer Müll raus
Java:
public class Lotto{
static int[] lottoZahlenZiehen(){
java.util.Random rndGen = new java.util.Random();
int [] ziehung = new int[6];
for (int i = 1; i < ziehung.length; i++) {
int zufallszahl = rndGen.nextInt(49) + 1;
ziehung [i] = zufallszahl;
} // end of for
return ziehung;
}
public static void main(String[] args){
Out.println(lottoZahlenZiehen());
}
}
Da oben vergessen alle, dass eine einmal gezogene Kugel nicht ein zweites mal gezogen werden kann, 6 mal Random.next() aufzurufen kann nicht funktionieren. Man muss wirklich shuffeln
Java:
public static int[] lotto(){
int[] result = new int[6];
List<Integer> trommel = new ArrayList<Integer>(49);
for(int i=1;i<=49;i++) trommel.add(i);
Collections.shuffle(trommel);
for(int i=0;i<6;i++) result[i]=trommel.get(i);
return result;
}
Das ganze, große Array zu mischen kann niemals eine Empfehlung sein, wenn man nur ein paar wenige, zufällige Elemente aus diesem braucht. Den Gedankengang sollte man zügig wieder vergessen und sich überlegen, wie man so ein Problem vernünftig löst.
Das ganze, große Array zu mischen kann niemals eine Empfehlung sein, wenn man nur ein paar wenige, zufällige Elemente aus diesem braucht. Den Gedankengang sollte man zügig wieder vergessen und sich überlegen, wie man so ein Problem vernünftig löst.
Es geht um Lotto, um 49 Zahlen. Es ist vernünftig, das zu shuffeln, weil es eine schnelle einfache Lösung liefert die man ohne großen Trara implementieren kann.
Bei 49 Milliarden Kugeln ist das nicht optimal.
Die Lösung von timbeau ist natürlich auch sehr schön, weil da tatsächlich "gezogen" wird.
Ich denke mir nur, wenn man bei kleinen Sachen anfängt, sich die faulen Lösungen zu nehmen, macht man das bei größeren Sachen nachher auch so. Getreu: was Hänschen nicht lernt, lernt Hans nimmermehr.
Eine vernünftige zieh-Lösung hat auch nur unwesentlich mehr zeilen.
int[] ia = new int[6];
a: for (int i = 0; i < 6;) {
int r = random.nextInt(49) + 1;
for (int j = 0; j < i; j++) {
if (ia[j] == r) {
continue a;
}
}
ia[i++] = r;
}
1+2+3+4+5=15 Vergleichsoperationen + vielleicht 6 für die Generierung der Zahlen. Bei einer HashSet hätte man die Kosten fürs Erstellen und Einfügen (nicht = 1). Bei einem Array mit 49 Zahlen, 49 + die des Mischens.
Also versuche hier niemanden einen Bären aufzubinden, bitte. Und klicke btw. auf danke.
int[] ia = new int[6];
a: for (int i = 0;;) {
int r = random.nextInt(49) + 1;
for (int j = 0; j < i; j++) {
if (ia[j] == r) {
continue a;
}
}
ia[i++] = r;
if (i == 6) {
break;
}
}
was aber möglicherweise noch ein paar Vergleiche sparen könnte.
So haben wir das letztes Jahr in der Schule machen müssen:
Java:
package Lotto;
Lottopublic class Lotto{
static int[] lottoZahlenZiehen(){
java.util.Random rndGen = new java.util.Random();
int [] ziehung = new int[6];
for (int i = 1; i < ziehung.length; i++) //Wo beginnt der Index eines Arrays? Nicht bei 1!
{
int zufallszahl = rndGen.nextInt(49) + 1;
ziehung [i] = zufallszahl;
} // end of for
return ziehung;
}
public static void main(String[] args){
int[] ziehung = lottoZahlenZiehen();
//und jetzt gibst du das Feld ganz brav aus :)
}
}
1+2+3+4+5=15 Vergleichsoperationen + vielleicht 6 für die Generierung der Zahlen. Bei einer HashSet hätte man die Kosten fürs Erstellen und Einfügen (nicht = 1). Bei einem Array mit 49 Zahlen, 49 + die des Mischens.