Lotto 6 aus 49

Lybrial

Bekanntes Mitglied
Hallo,

wie der Name schon sagt möchte ich 6 Zufallszahlen generieren.
Vorgabe ist, das 49 Zahlen in einem Array gespeichert werden sollen.
Dann soll zufällig eine der 49 Zahlen ausgewählt werden und der Index
des Arrays an dieser Stelle auf "False" gesetzt werden.

Hintergrund dafür ist, das wenn die nächste zufällig generierte Zahl, die
selbe sein sollte wie die vorangegangene soll er einfach checken ob der
Array-Index an dieser Stelle True oder False ist, wenn True, kann er die
Zahl nehmen, wenn False soll er eine Stelle nach "rechts" gehen und die
dortige Zahl ausgeben und auf False setzen.

Ich habe leider keine Ahnung wie man so etwas machen kann....

Da hat bestimmt wer ne Idee ;)
 

Michael...

Top Contributor
Du kannst bei einem int Array keine Stelle auf false setzen, höchstens auf -1 oder sonst einen ungültigen Wert.
Eventuell sollst Du aber auch nur ein boolean Array verwenden und die Indizes stehen dann für die Lottozahlen.
 

AmunRa

Gesperrter Benutzer
Java:
boolean[] b= new boolean[49];

for (int i=0;i<49;i++){
b[i]=true;
}

Random r= new Random();

int[] n=new int[6];

for (int i=0;i<6;i++){

int rand= r.nextInt(49);

while(b[rand]==false){
rand++;
if (rand>=49){
rand=0;
}
}
n[i]=rand+1;
}

//nun sind in n die Zahlen die du gezogen hast

kann sein das noch ein kleiner Fehler drin is habs nicht kompiliert
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
EDIT: AmunRa: Damit hast du dem TO aber nicht wirklich weitergeholfen :-( es ist zum ko.....


Natürlich kannst du einen boolean[48] array machen - ist sogar sehr effizient
Aber du solltest wohl die 6 gezogenen Zahlen am Schluss auch noch haben, also brauchst du noch einen int[5] array. Den boolean array könntest du dir auch sparen und den Array der schon gezogenen Zahlen durchsuchen.

Wie generierst man eine Zufallszahl?
Math.random liefert einen zufälligen double Wert zwischen 0 und 1
(gibt es sicher schon in einigen anderen Threads)

ein bisschen Rechnen und du kommst auf Werte zwischen 1 und 49
(gibt es sicher schon in einigen anderen Threads)

prüfen ob Zahl schon früher gezogen wurde
falls nein: boolean setzen und Zahl eintragen
falls ja: so lange neue Zahl ziehen, bis einen neue gefunden wurde

das ganz so lange wiederholen bis 6 Zahlen gefunden wurden.

Wow, bin ich heute gutmütig, sonst hätte ich nur (gibt es sicher schon in einigen anderen Threads)" geschrieben!
 

AmunRa

Gesperrter Benutzer
@ Andi_CH

du brauchst nicht die anderen User beleidigen das gehört sich auch nicht,

weiters müssten seine arrays boolean[49] und int[6] sein und nicht wie du geschreiben hast boolean[48] und int[5];
 

Lybrial

Bekanntes Mitglied
Ich danke für die Hilfe :)

Eigentlich wars recht trivial, drauf zu kommen ist die Schwierigkeit...

Zu AmunRas Code:
Nachdem eine Variable erzeugt wurde muss das Array an der betreffenden
Stelle, wenn ich das richtige sehe, noch auf "false" gesetzt werden.
Java:
boolean[] b= new boolean[49];
 
for (int i=0;i<49;i++){
b[i]=true;
}
 
Random r= new Random();
 
int[] n=new int[6];
 
for (int i=0;i<6;i++){
 
    int rand= r.nextInt(49);
 
    while(b[rand]==false){
        rand++;
        if (rand>=49){
            rand=0;
        }
    }
    n[i] = rand+1;
    b[rnd] = false;     //genau hier ;)
}
 
Zuletzt bearbeitet:

xerberuz

Bekanntes Mitglied
Wenn man eine Zahl schon hat und dann einfach die nächste nimmt macht man damit nicht die Wahrscheinlichkeit kaputt? Wenn man 30 schon hat dann ist 31 doch wahrscheinlicher als die anderen Zahlen.
 

Lybrial

Bekanntes Mitglied
Das Problem ist, wir sollen das erweitern können, das wir z.B. auch
50.000.000 aus 60.000.000 berrechnen können, mit annehmbarer Rechenzeit.

Würden wir einen Random-Zahl erzeugen, und dann prüfen ob diese schon
erzeugt wurde und dann solange Zahlen erstellen lassen, bis die passende
Zahl kommt, rechnet der PC bis zum St.Nimmerleinstag ;)
 

xerberuz

Bekanntes Mitglied
eine Alternativlösung wäre z.B.:

Java:
 public static void main(final String[] args) throws InterruptedException
   {
      final List<Integer> numbers = new ArrayList<Integer>();
      for (int i = 1; i <= 49; i++)
      {
         numbers.add(i);
      }
      Collections.shuffle(numbers);
      System.out.println(Arrays.deepToString(numbers.subList(0, 6).toArray()));
   }
 

Andi_CH

Top Contributor
@ Andi_CH
du brauchst nicht die anderen User beleidigen das gehört sich auch nicht,

Ach nettes Detail ob 49 oder 0..48 so einen Tippfehler findet ja wohl jeder selbst.

Wenn du dich beleidigt fühlst, wenn man dich auf einen Fehler aufmerksam macht - na ja. Ich bleibe dabei dass es ein Fehler ist hier im Anfängerforum einfach so die Lösung hinzuknallen.

Dazu eine Anmerkung: Um die Lösung in Code zu schreiben hätte ich wesentlich weniger lang gebraucht, als um die Beschreibung zu erstellen - dem Fragesteller auf Anfängerniveau wird viel mehr geholfen, wenn man ihn auf den richtigen Weg bringt und dafür bin ich bereit Zeit zu investieren. Dass ich dann gefrustet bin wenn einer ..... aber vemtulich wirst du das nicht verstehen.

(Hättest ja auch einen Link auf die x schon exisierenden Lösungen für das selbe Problem einfügen können)

no further comments!
 

Marco13

Top Contributor
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
U Lotto-Zahlen App Java Basics - Anfänger-Themen 34
A Lotto Programm Java Basics - Anfänger-Themen 3
J Lotto 6 aus 49 Java Basics - Anfänger-Themen 7
C Lotto 3, 4, 5, 6 Richtige nach x Ziehungen ermittelt.. Java Basics - Anfänger-Themen 7
T Lotto Zahlen in Array speichern Java Basics - Anfänger-Themen 2
Z Lotto-Programm Wieso klappt das? Java Basics - Anfänger-Themen 8
K Methoden Lotto mit sechs richtigen Java Basics - Anfänger-Themen 10
Z Lotto mit Arrays schreiben Java Basics - Anfänger-Themen 4
X Lotto Zahlen Ziehung Java Basics - Anfänger-Themen 26
M Lotto Programm Java Basics - Anfänger-Themen 18
H Methoden Lotto-Programm, Methoden ordnen & umbennen Java Basics - Anfänger-Themen 4
C Lotto Spiel Java Basics - Anfänger-Themen 23
2 Lotto-Spiel Java Basics - Anfänger-Themen 9
1 Ein weiteres Lotto programm Java Basics - Anfänger-Themen 6
R Lotto Zahlen Java Basics - Anfänger-Themen 4
B Lotto mittels TreeSet Java Basics - Anfänger-Themen 3
N Lotto Spiel Java Basics - Anfänger-Themen 12
P Lotto Spiel Java Basics - Anfänger-Themen 50
P Zufallszahlen fuer Lotto generieren Java Basics - Anfänger-Themen 28
K Fehler in Lotto Programm Java Basics - Anfänger-Themen 8
G Lotto Zufallszahlen zählen Java Basics - Anfänger-Themen 3
G Zufalls Lotto Zahlen Ausgeben Java Basics - Anfänger-Themen 16
A Lotto Zahlen Ausgeben Java Basics - Anfänger-Themen 2
X Lotto Zufallszahlen mit ArrayList erstellen Java Basics - Anfänger-Themen 3
V Doppelte Zahlen bei Lotto verhindern Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben