Oft denkt man sich, dass es wesentlich sinnvoller ist Lottozahlen zu generieren, als sie selbst anzukreuzen. Das ankreuzen kostet nicht nur Zeit, sondern man steht auch oft davor und weiß nicht welche zahl man nehmen soll. Hierfür kann man diese Zahlen am besten per Java generieren. Dies spart nicht nur Zeit, sondern es ist auch Witzig anzusehen, welche zufallsergebnisse raus kommen. Die Ausgabe unterscheidet sich natürlich bei jedem aufruf, könnte aber, wie z.b bei mir folgende sein:
2
6
8
14
24
40
package tutorialstrings; import java.util.Random; import java.util.TreeSet; /** * * @author li */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { System.out.println("Lottozahlen!"); TreeSet randomNumbers = uniqueRandoms(6, 1, 49); for (int e : randomNumbers) { System.out.println(" " + e); } } public static TreeSet uniqueRandoms(int size, int min, int max) { TreeSet numbers = new TreeSet(); Random generator = new Random(); int n; if (size > max + 1 - min) { throw new IllegalArgumentException("keine eindeutigen Zahlen"); } if (size == max + 1 - min) { for (int i = min; i <= max; ++i) { numbers.add(i); } } else { while (numbers.size() != size) { n = min + generator.nextInt(max + 1 - min); numbers.add(n); } } return numbers; } }
2 Antworten für "Lottozahlen generieren"
Hi, leider funktioniert der Algorythmus nicht ganz. Bei mir meckert eclipse in dieser Zeile: for (int e : randomNumbers) {
Habe alles mal mit ner ArrayList gemacht jetzt funktioniert es. Kann dir den Code schicken wenn du willst. Leider hat der Algorithmus noch einen logischen Fehler. Es kann der Fall eintreten dass eine Zahl 2x mal oder Theoretisch 6 mal gezogen wird.
Zum Beispiel:
9 18 18 20 27 30
Grüßle Frank
Also ich würde vorschlagen alle zahlen zu speichern mit automatischen Arrays num1 num2 etc anfangswert 0 danach werden sie zahlen generiert und neue zahl darf nicht gleich eine alte sein
while (num[i] != eingabe)
{
i++;
if( num[i]=0)
{
num[i]=eingabe;
}
else{random();}
}
Kommentar verfassen