Lottozahlen

  • Themenstarter Themenstarter DerMarco
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
D

DerMarco

Gast
Hi,

bin gerade dabei ein Lottoprogramm zu schreiben und weiß nicht wie genau ich das mit den doppelten Zahlen löse. Also, das er, wenn eine Zahl doppelt erstellt wird, er dann eine andere erstellt.

Kann mir jemand sagen wie ich das machen soll?

MfG Marco
 
die einfachste Lösung ist IMHO so:
Code:
	int[] zahlen = new int[6];
	Random random = new Random(System.currentTimeMillis());
	for(int i=0;i<zahlen.length;i++)
	{
		zahlen[i]= random.nextInt(48)+1;
		for(int j=0;j<i;j++)
			if(zahlen[j]==zahlen[i])
				i--;
	}
 
Allerdings kannst du dir da die Initialisierung mit currentTimeMillis() sparen, da er das standardmäßig selber macht bei Verwendung des Standardkonstruktors Random().....

nur so als anmerkung 😉
 
Ich habe mal vor längerer Zeit ein Applet geschrieben, welches das Problem des Threads lösen kann.
Code:
import java.applet.Applet;

public class Lotto extends Applet {
  private int[] zahlen;

  public void init() {
    zahlen = new int[6];
    int aktuellerTipp = 0;

    while(aktuellerTipp < zahlen.length) {
      int gezogeneZahl = (int)(Math.random() * 100);
      
      if(gezogeneZahl < 1 || gezogeneZahl > 49)
        continue;
      else {
         zahlen[aktuellerTipp] = gezogeneZahl;
         
        for(int i = 0; i < aktuellerTipp; i++) {
          if(zahlen[i] == gezogeneZahl) {
               aktuellerTipp--;
          }
        }
      }
      aktuellerTipp++;
    }
    ausgeben();
  }

  private void ausgeben() {
    System.out.println("ausgeben()");
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < zahlen.length; i++) {
      sb.append(zahlen[i]);
      sb.append("   ");
    }
    new MyDialog(sb.toString()).setVisible(true);
  }
}
Ein Dialog, der die Ausgabe anzeigt.
Code:
import java.awt.*;
import java.awt.event.*;

public class MyDialog extends Dialog {
   public MyDialog(String zahlen) {
      super(new Frame(), "Lottozahlen 6 aus 49", true);
      setSize(200, 100);
      setLocationRelativeTo(null);
      setResizable(false);
      addWindowListener(new WindowAdapter() {
         public void windowClosing(WindowEvent e) {
            dispose();
         }
      });
      Font f = new Font("Arial", Font.BOLD, 20);
      Label ziehung = new Label(zahlen);
      ziehung.setFont(f);
      add(ziehung);
      pack();
   }
}
 
Kommt drauf an welchen Ansatz du verfolgst...

Wenn du deine Zahlen in nem Array speicherst , kannst du Arrays.sort(...) verwenden.
 
Hi, ich bin wohl nicht die einzige die so ihre Probleme mit den Lottozahlen hat...
Also ich wollte per Zufall 7 Zahlen auswählen lassen und diese dann per BubbleSort sortieren. Das mit den Zufallszahlen klappt auch, aber irgendwo muss ein Fehler drin stecken weil ich als Ergebnis sowas:
000000 27 00000 27 47 0000 9 27 47 000 9 27 47 49 usw bekomm

Code:
import java.util.Random;

class BubbleLotto{

  public static void main (String[] args) {

    //Zufallszahlengenerator
    Random rand = new Random();

    int [] zufallszahl = new int [7];

        for (int i=0; i<zufallszahl.length; i++) {
	zufallszahl [i]  = 1 + rand.nextInt (49);

        int tmp;
	int k;
	boolean done;
	
        //Sortieren
          do{
           done = true;
            for (k=0; k<zufallszahl.length-1; k++) {
             if( zufallszahl[k] > zufallszahl[k+1]) {
              tmp = zufallszahl[k]; zufallszahl[k]=zufallszahl[k+1]; zufallszahl[k+1] = tmp;
              done = false;
             }
            }
          }while(!done);
          
          //Ausgabe
          for(k=0; k<zufallszahl.length; k++){
            System.out.print (zufallszahl [k] + " ");}
    }
  }
}

Für schnelle Hilfe wär ich echt dankbar 🙂
 
In Zeile 13 fählt einfach die Klammer 🙂 - besser gesagt - eine Klammer vom Ende gehört in die Zeile 13. So wird auch die Sortierung und die Ausgabe 7 mal wiederholt 🙂.

Chearius
 
Du hast mir den Abend gerettet 🙂
Das wär mir wohl nie aufgefallen.. Danke!!
 
Will ja nicht unverschämt sein, aber mir is grad noch ne Kleinigkeit aufgefallen...
Ich kann zwar die unsortierten und die sortierten Zahlen hintereinander ausgeben, aber gibt es auch einen Befehl damit die sortierten Zahlen in ner neuen Zeile also unter den unsortierten ausgegeben werden?
 
Einfach zwischen den Ausgaben folgendes schreiben:
Code:
System.out.println();
(Gibt eigentlich nur die Zeilenende aus) 🙂

Chearius
 
hm, da werden mir die sortierten Zahlen alle einzeln in jeweils ner neuen Zeile ausgegeben, hab mir das irgendwie anders gedacht
 
das Problem mit den doppelten hätte man auch einfacher lösen können
Code:
        List<Integer> all = new ArrayList<Integer>();
        int[] sel = new int[7];
        for(int i=0;i<49;i++) all.add(Integer.valueOf(i+1));
        Collections.shuffle(all);
        for(int i=0;i<7;i++) sel[i]=all.get(i).intValue();
        java.util.Arrays.sort(sel);
        System.out.println(java.util.Arrays.toString(sel));
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben