Hilfe: Lotto: die 6 häufigsten generierten zahlen ausgeben

Status
Nicht offen für weitere Antworten.
M

Michi_himself

Gast
Hallo liebe Leute,

habe ein Problem. Bin gerade dabei, ein Lottoprog zu schreiben, bei dem als letzte
Funktion n Lotto-Tipps (6 aus 49) ausgeben soll, und dann in einer Statistik die 6 meist gezogenen Zahlen ausgegen werden sollen.

die n Tipps kann ich schon generieren lassen, und auch eine Statistik ausgeben, jedoch nur wie oft jede einzelne Zahl vorkommt.


Auf welche Weise kann ich die 6 meist gezogenen ausgeben? mit Array und TreeMap bin ich nicht weitgekommen.

Hab ihr vielleicht eine Idee??

mfg, danke im vorraus.
 
B

bygones

Gast
wie nicht weitgekommen.

einfachster weg -> array mit 49 elementen. Inhalt eines Elements gibt an wie oft die Zahle gezogen wurde, respektiv Zahl -1

Code:
lotterie[0] = 2;
lotterie[10] = 4;

würde heißen Zahl 1 (im array stelle 0) wurde 2 mal gezogen, die Zahl 11 4mal
 
M

Michi_himself

Gast
1. meine Java-version 1.5

2. code:

der code mit dem ich versucht hab, die ausgabe der 6 meist gezogenen Zahlen zu realisieren
(hab die Schritte im Kommentiert

Code:
import java.util.*;
class Test {

//Lottozahlengenerator
public static void fillArrayList(List<Integer> list)
{

int [] zahlen = new int [6]; //Array für zufallszahlen
int zufall;
Random generator = new Random();

for (int i=0;i<=5;i++ ) {   //for-schleife zum auffüllen des array mit zufallszahlen
zufall = 1 + Math.abs(generator.nextInt(50));  

if (zufall == 0) {   
i--;
continue;
}
zahlen[i] = zufall;


for (int j=0;j<i;j++) {
if ( zahlen[j] == zufall ) {

i--;
break;
}
}
}

for (int k=0;k<=5;k++)         //fügt die Zahlen in eine ArrayList, die aus der main-Funktion übergeben wurde
{

list.add(new Integer(zahlen[k]));

}
  }
//Hauptprogramm
public static void main(String[] args) {

String lottokugel=" ";

List<Integer> list1 = new ArrayList<Integer>();
Map<String,Integer> map = new TreeMap<String,Integer>();

for (int z=1;z<=30;z++)           //die gewünschten kombinationen werden erstellt.
{
fillArrayList(list1);
}
System.out.println("\nLotto-Tipp(s):");

for (int y=0;y<=(list1.size()-1);y++)  //die kombinationen werden ausgegeben
{
if ( y % 6 == 0)
{
System.out.println("\n");
}

Object ausgabe =list1.get( y );
System.out.print( ausgabe + "\t");
}

int [] lottoZahlen = new int [51];                   

for(int x=0;x<=(list1.size()-1);x++) {      // hier werden die kombinationen aus der ArrayList gelesen, und geprüft, 
                                                             //wie oft diese auftreten, dazu werden die diese in ein array abgelegt
Integer vergleich = list1.get( x );

lottoZahlen[vergleich] += 1;
}
System.out.print("\n\n\n\n");
System.out.println("Lottozahlen:\t\tHäufigkeit:\n");


for (int u=0;u<=(lottoZahlen.length-2);u++)         //die zahlen werden in eine TreeMap eingefügt
{
lottokugel = String.valueOf(lottoZahlen[u]);
map.put(new String(lottokugel),u);
}
for( String key : map.keySet() ) {               //der inhalt der der map wird ausgegeben
System.out.println( key + " -> " +
map.get(key) );
}


}
}

verzeiht die schreibfehler, es ist schon ziemlich früh ;)
 
G

Guest

Gast
Erstelle eine Klasse LottoZahl, die die Zahl selbst und die Anzahl der Ziehungen beschreibt
und das Comparable-Interface implementiert. Erstelle ein Array mit 49 Instanzen dieser
Klasse und verwende diese bei den Ziehungen. Am Ende kannst Du mit Arrays.sort(...) die
LottoZahl-Instanzen auf-/absteigend sortieren, je nach dem wie du das Comparable Interface
implementiert hast.
 
M

Michi_himself

Gast
deathbyaclown hat gesagt.:
wie nicht weitgekommen.

einfachster weg -> array mit 49 elementen. Inhalt eines Elements gibt an wie oft die Zahle gezogen wurde, respektiv Zahl -1

so hab ich das gemacht. ist auch im quelltext zu sehen, den ich noch nach deinem beitrag gepostet hab.
nur kann ich dann ja nicht nach den meist gezogenen sortieren. mit arrays.sort z.b. wäre dann der index des Arrays nicht passend zu dem Wert.

Bei TreeMap wird ja nach dem Schlüssel sortiert, aber das dumme ist, dass dazu als Schlüssel die Häufigkeit einfügen muss, und der Schlüssel wird ja bei Gleichem Wert bekannterweise überschrieben... ;)

@ Gast:

Hmm, klingt gut, nur wie sehe das denn in Form eines Quellcodes aus ;)
 
R

Roar

Gast
Code:
class Lottozahl implements Comparable<LottoZahl> {

public LottoZahl(int zahl) {
this.zahl = zahl;
}

public void gezogen() {
this.gezogen++;
}

public int compareTo(LottoZahl z) {
int i1 = gezogen, i2 = z.gezogen;
return (i1 < i2 ? -1 : (i1 == i2 ? 0 : 1));
}
}

...
LottoZahl[49] zahlen = ...
...
Arrays.sort(zahlen);
...

so ungefähr irgendwie etwa
 
M

Michi_himself

Gast
die neue klasse müsste ich ja in der Main Funktion per z.B.

LottoZahl lotto = new LottoZahl();

einbinden?!?!?!


...
LottoZahl[49] zahlen = ...
...
Arrays.sort(zahlen);
...

wo kommt das hin???
 
G

Gast

Gast
Ihr wisst aber schon das Lotto (6 aus 49 ohne zurücklegen) statistisch gleichverteilt ist . Auf kurz oder lang gibts keine häufigsten, bzw. ein Unterscheid ist infitissimal klein.

Wozu um Himmels Willen brauchst du bzw. für was schreibst du ein Lottoprogramm? Ich hoffe nicht um dir die am häufigsten gezogenen Zahlen ausgeben zu lassen, in der Meinung dein Gewinn sei dann wahrscheinlicher.
 
M

Michi_himself

Gast
hehe :wink: die millionen locken...

Nein, es hat mal wieder etwas mit Schule zu tun.

Aber ich habe so langsam die Lösung.

(TreeMap)
Ich habe mit Hilfe des folgenden Codes der Häufigkeit der gezogenen Zahlen
die Nummer der dazugehörigen "Kugel" einfach als Nachkommastelle angehängt.
Somit kann der Schlüssel im TreeMap nicht überschrieben werden, was, wie im vorigen thread beschrieben, mein prob war.


Code:
for (int u=1;u<=(lottoZahlen.length-2);u++)
{
haufigkeit = Double.valueOf(lottoZahlen[u]);
if (u <=9)
{
 lottoKugel = (Double.valueOf(u)/10);
}
else {
  lottoKugel = (Double.valueOf(u)/100);
}

map.put(new Double((haufigkeit+lottoKugel)),new Integer(u));
}

Darauf habe ich einfach die automatisch in der TreeMap sortierten Werte aus der TreeMap in eine ArrayList übertragen, um dem Element einen Index zu verpassen.
Die Arraylist habe ich mit einem Array ausgelesen.

Jetzt bin ich dabei, die Ausgabe einzugrenzen, damit die 6 meistgezogen nur ausgegen werden.
Also die Array-Indexs mit dem höchsten Ínhalt.

Nebenbei: Weiss jemand, wie ich Double Werte in Integer umwandeln kann????

Code:
double kommazahl =33.0;

int beispiel = Integer.valueOf(kommazahl)

liefert nur folgende Fehlermeldung:

Test.java:119: cannot find symbol
symbol : method valueOf(double)
location: class java.lang.Integer
ausleseParsed=Integer.valueOf(auslese[se]);
^
1 error
[/i]
 
S

SlaterB

Gast
double y = 7.3;
int x = (int) y;

rundet glaube ich immer ab, ansonsten gibts noch Math.round() und ähnlich Spezialitäten,

das mit der Map klingt ziemlich kompliziert,
wen du schon den Trick mit dem Kommazahlen anwenden willst tut es vielleicht auch ein double-Array?


in der Art von

Code:
int[] lottozahlen = {3, 0, 0, 7, 4, 0, 0, 9, 9, 12, 3444};
double[] m = new double[lottozahlen.length];
for (int i=0; i<lottozahlen.length; i++) {
   m[i] = lottozahlen[i]+ (0.01 * i);
}
Arrays.sort(m);
	
for (int i=0; i<6; i++) {
	int k = lottozahlen.length-1-i;
	System.out.println((i+1)+". häufigste Zahl ist "+((int) ((m[k] * 100) % 100))+
		", Anzahl: "+(int) m[k]);
}
 
M

Michi_himself

Gast
oO

oha!! auf so was wäre ich ja nie gekommen!! [schild=9 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]dankee![/schild]

probier ich gleich mal , denn der versuch, dies per map zu lösen, funktioniert zwar, aber nicht so ganz,
wie ich es mir vorstelle.

Alle Werte werden korrekt eingelesen und auch ausgegeben; das Problem ist, dass, wenn ich dann mit einer for schleife durch die in die ArrayList übertragene Treemap laufe und den Inhalt ausgebe, variiert die Indexgröße zwischen 46 und 49....?!!??

was könnte da nicht stimmen?

hier der code.... was ist da falsch?
Code:
for (int u=0;u<(lottoZahlen.length);u++)
{
haufigkeit = Double.valueOf(lottoZahlen[u]);
if (u <=9)
{
 lottoKugel = (Double.valueOf(u)/10);
}
else {
  lottoKugel = (Double.valueOf(u)/100);

}

map.put(new Double((haufigkeit+lottoKugel)),new Integer(u));
}
//lottoKugelInt = Integer.valueOf(map.size());
double [] lottoStat = new double [map.size()];
System.out.println(map.size()+"\n\n\n\n");


for( Double key : map.keySet() ) {

//  lottoKugelInt =Integer.ValueOf(map.get(key));

list2.add(map.get(key));

System.out.println(key+ "\t"+ map.get(key));
   }
System.out.println("\2\2\2\2\2");

   double [] auslese = new double [51];

for(int se=0;se<(list2.size());se++) {

double ernte = list2.get( se );

auslese[se] = ernte;

System.out.println(se+ "\t" +auslese[se]);

//ausleseParsed=(int) auslese[se];

//System.out.println(ausleseParsed);

}
System.out.println("\n\n\n\n\n\n\n\n\n\n");
for (int ausgabeMax=(auslese.length-7);ausgabeMax<(auslese.length);ausgabeMax++)
{
ausleseParsed=(int) auslese[ausgabeMax];

System.out.println(ausleseParsed);
}
 
M

Michi_himself

Gast
Hallo!

Habe mir nochmal die Ausgabe der Werte angeschaut:


..........................
3.26 26
3.3 3
3.32 32
3.34 34
3.36 36
3.4699999999999998 47 <-------------
3.49 49
3.6 6
3.9 9
4.1 10
................


die stelle, die mir spanisch vorkommt, habe ich mit dem Pfeil markiert
Immer wenn so eine eigenartige Zahl auftritt, verändert sich immer die Feldgröße

Diese double werte werden mit folgenden code stück bewerkstelligt
Code:
for (int u=0;u<(lottoZahlen.length);u++)
{
haufigkeit = Double.valueOf(lottoZahlen[u]);
if (u <=9)
{
 lottoKugel = (Double.valueOf(u)/10);
}
else {
  lottoKugel = (Double.valueOf(u)/100);

}

Wie kommt es zu dieser verkorksten Ausgabe, die mein Code zunichte macht??? :autsch:
 
S

SlaterB

Gast
double ist nun mal double,
solche Kommazahlen lassen sich schwer mit Bits und Bytes darstellen,
da muss man dann an der Ausgabe selber feilen,

es gibt bestimmte Klassen für sowas (NumberFormat oder so)
ansonsten kann man sich auch per Hans ne Funktion schreiben,
für 2 Stellen nach dem Komma z.B. mit 100 mal nehmen, runden und dann im String das Komma manuell weiter links einordnen

----------

zu den Indexen:
deine Rechnung ist etwas komisch
1 bis 9 teilst du durch 10 -> 0.1 bis 0.9
10 bis 49 teilst du durch 100 -> 0.10 bis 0.49

0.1, 0.2 0.3 usw. werden also sowohl für 1, 2, 3 als auch für 10, 20, 30 errechnet!
teil doch einfach immer durch 100, dann hast du 0.01 bis 0.49 durchgängig

---------

Double.valueOf(int) macht übrigens keinen Sinn?,
du kannst direkt double haufigkeit = u; schreiben
 
M

Michi_himself

Gast
Hi Slater!

das double Problem hab ich mithilfe von Math.round() gelöst

Aber der Knackpunkt war wirklich der fehler mit dem Index!! :applaus:

ich habs jetzt durch 100 geteilt, wie du sagtest, und siehe da, es läuft wie geschmiert.


[schild=6 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Dankeschööön![/schild]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Hilfe bei Methode Allgemeine Java-Themen 14
M Javascript Hilfe bei ToDoList? Allgemeine Java-Themen 1
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
T Hilfe bei negation von suchabfrage Allgemeine Java-Themen 2
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
N Hilfe bei RegEx benötigt Allgemeine Java-Themen 3
A Hilfe beim Verständnis Allgemeine Java-Themen 16
V Hilfe mit Java Code Allgemeine Java-Themen 4
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
alinakeineAhnungv Hilfe bei einem Straßenbahn-Projekt von mir Allgemeine Java-Themen 18
Aboya Kugel mit Hilfe von Dreiecken rekursiv zeichnen Allgemeine Java-Themen 2
K Anzeigemöglichkeit von Bildern in JavaFX mit Hilfe von MongoDB GridFS Allgemeine Java-Themen 0
A Preisberechnung, Hilfe Allgemeine Java-Themen 4
M Bräuchte Hilfe bei der Aufgabe Allgemeine Java-Themen 1
s_1895 Hilfe bei Java Tic Tac Toe Allgemeine Java-Themen 8
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
M Hilfe bei einer Java Programmieraufgabe! Ab morgen Montag um 08:00 Uhr Allgemeine Java-Themen 5
B Bei Email: FW / AW... - Hilfe bei String suche Allgemeine Java-Themen 21
U Erste Schritte Hilfe bei simplem Glücsspiel in Java Allgemeine Java-Themen 4
K OOP Suche Hilfe + Erklärung für eine Hausaufgabe Allgemeine Java-Themen 1
K Objektorientierung, hilfe Allgemeine Java-Themen 9
V Bilder bei bestimmten Zeiten wechseln, bitte um Hilfe Allgemeine Java-Themen 5
D Hilfe bei Informatik Hausaufgaben Allgemeine Java-Themen 30
RalleYTN Brauche Hilfe beim Run-Length-Decoding Allgemeine Java-Themen 9
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
F NetBeans Hilfe!!! Allgemeine Java-Themen 23
H Schiffe versenken JButton Schiffe mit GUI verbinden Hilfe! Allgemeine Java-Themen 2
M Bitte Hilfe mit REGEX (Negieren) Allgemeine Java-Themen 4
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
S GetMethode erstellen mit Hilfe von Parametern Allgemeine Java-Themen 9
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
B Hilfe bei Übungsblätter Allgemeine Java-Themen 9
O Erste Schritte Benzinverbrauch Code Hilfe Allgemeine Java-Themen 3
C Hilfe Bei Vegas Slide Allgemeine Java-Themen 0
B Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle) Allgemeine Java-Themen 3
Ice4P4rty Hilfe Bei Promillerechner Allgemeine Java-Themen 9
C Atfx mit Hilfe von OpenAtfx auslesen Allgemeine Java-Themen 1
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
G Hilfe bei Projektarbeit Allgemeine Java-Themen 5
GenerationLost Input/Output Custom Serialization - hilfe bei Realisierung Allgemeine Java-Themen 8
J Hilfe!!! Ausbildung Allgemeine Java-Themen 14
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
B Swing Hilfe bei Abfrage von Benutzernamen und Passwort Allgemeine Java-Themen 2
T Hilfe bei Code Allgemeine Java-Themen 3
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
S Hilfe bei Gui Allgemeine Java-Themen 3
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
GRAZZ0R Hilfe zum Spiel Mensch ärger dich nicht Allgemeine Java-Themen 1
C Hilfe bei den Ausgaben Allgemeine Java-Themen 4
K Hilfe bei GUI für Pizza-Service Allgemeine Java-Themen 11
J Hilfe bei Datumsberechnung aus Textfeld Allgemeine Java-Themen 10
I Bitte Drngend hilfe Allgemeine Java-Themen 2
C Hilfe bei NoClassDefFoundError Allgemeine Java-Themen 14
C Hilfe bei einer Fehler meldung Allgemeine Java-Themen 3
I Methoden Schnelle Hilfe benötigt - Kleines Video/Slideshow aus mehreren Bildern erstellen Allgemeine Java-Themen 3
C Hilfe bei einer Point Ausgabe Allgemeine Java-Themen 7
S Probleme mit meinem MacBook Pro DRINGEND HILFE erbeten! Allgemeine Java-Themen 17
N Erste Schritte [HILFE] effizienter,leistungsfähigermbackground Pixelbot Allgemeine Java-Themen 5
A Hilfe gesucht Allgemeine Java-Themen 44
X ArrayList will nicht so wie ich will. Hilfe Allgemeine Java-Themen 8
C Hilfe bei einer Fehlermeldung Allgemeine Java-Themen 5
C Hilfe bei MalformedURLException Allgemeine Java-Themen 7
D Baum zeichnen hilfe Allgemeine Java-Themen 4
M Hilfe bei parseInt Allgemeine Java-Themen 4
F Compiler-Fehler Hilfe bei Startup error Allgemeine Java-Themen 3
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
M Input/Output Java + OCR ? Erfahrungen und bitte um Hilfe Allgemeine Java-Themen 12
M Brauche Hilfe bei Quellcodeverständnis Allgemeine Java-Themen 4
B Zahlen ausgeben hilfe! Allgemeine Java-Themen 8
S Java USB dringend Hilfe! Allgemeine Java-Themen 6
X Hilfe bei Programm Allgemeine Java-Themen 5
zer0zer0 Best Practice apache common cli - optionen für hilfe ausblenden Allgemeine Java-Themen 5
F Bitte um Hilfe! Allgemeine Java-Themen 5
S Hilfe bei geeignetem Pattern (Decorierer) Allgemeine Java-Themen 2
D Brauche Hilfe bei Rechnung (Exponentiation) Allgemeine Java-Themen 12
F Brauche Hilfe bei Java Allgemeine Java-Themen 6
S Hilfe bei simplem Programm Allgemeine Java-Themen 3
J Ein blutiger Anfänger braucht Hilfe Allgemeine Java-Themen 7
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
A ALTER TABLE mit Hilfe von RegEx zerlegen, splitten Allgemeine Java-Themen 5
B Dringend Hilfe gesucht für Struktogramm Allgemeine Java-Themen 11
C Brauche Hilfe mit Modulo Strategie Allgemeine Java-Themen 2
S Brauche Hilfe: Prüfungsaufgabe Java Allgemeine Java-Themen 8
J Probleme bei kompilieren ... Bitte um Hilfe Allgemeine Java-Themen 2
G java.exe in System 32. Hilfe!!! Allgemeine Java-Themen 8
M google plus java api - Anfänger sucht Hilfe Allgemeine Java-Themen 7
M Hilfe mit JOptionPane Allgemeine Java-Themen 2
I Hilfe: Klasse Vieleck Allgemeine Java-Themen 5
I javax.sound.sampled.* - Hilfe zu den Controls Allgemeine Java-Themen 8
C Hilfe bei Adressbuch-Programmierung, wie am Besten mit JList implementieren Allgemeine Java-Themen 2
S Hilfe bei der Cosinusapproximation Allgemeine Java-Themen 10
K Arraylist Hilfe Allgemeine Java-Themen 13
K Hilfe Felder Allgemeine Java-Themen 7
T Hilfe im Lizenz-Dschungel Allgemeine Java-Themen 11
S brauche Hilfe für ssh connection in java Allgemeine Java-Themen 6
W sql Query abspeichern selber variabele hilfe...? Allgemeine Java-Themen 16
N Hilfe bei Projekt Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben