Roulette !

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo !


Ich habe mir ein kleines Projekt vorgenommen. Und zwar will ich eine Art Roulette Tisch in Java erstellen.
Und zwar soll das so aussehen dass das Programm auf einmal ca 100 mal "die Kugel rollen" lässt, und dann eine Aufstellung darüber geben, wie oft welche Zahl gekommen ist.

So jetzt meine Fragen:

Was für Literatur, kann ich zu speziellen Lösung dieses Problems, lesen ?! Gibt es darüber etwas auf der Java Insel ?
Mit was für Klassen muss ich mich auseinandersetzten ?


Viele Lg !
 

Wildcard

Top Contributor
Du brauchst dir nur eine Zufallszahl (mit Random) aus dem Wertebereich eines Roulettetisches ausgeben lassen und dir die Zahl merken.
 
G

Gast

Gast
naja ich will ja dass 100 ergebnisse aufeinmal in einer Auswertung erscheinen, und ich ablesen kann, welche Zahl wie oft gekommen is ..

Lg
 

dercheffe

Aktives Mitglied
aber diese werte werden nie "echte" werte sein, weil ein computer den zufall eben nicht simulieren kann.
 

Wildcard

Top Contributor
Wohin die Kugel geht hängt von der Drehgeschwindigkeit des Tisches, der Gravitiation, Luftströmungen,... ab.
Es ist also nicht zufällig sondern schwer zu berechnen.
Insofern sind der Tisch und die Random Klasse hier äquivalent.
 
G

Gast

Gast
ja ich will das ganze natürlich mit Random machen, das ist mir klar ...
 
G

Gast

Gast
naja ich versuchs mal:

ich will ein Programm schreiben dass eine Roulette 100Mal "wirft", die Häufigkeitsverteilung graphisch ausgibt und die Standardabweichung der Häufigkeiten ausgibt ...

lg
 

Wildcard

Top Contributor
Dann passt's doch was ich dir gesagt habe.
Erzeuge dir 100 Zufallswerte, speicher die in einem Array/einer Liste und werte sie aus.
Für die Visualisierung kannst du dir dann überlegen ob du das selbst zeichnen willst, oder auf Bibliotheken wie zB JFreeChart zurückgreifen willst.
 

DocRandom

Top Contributor
..kleine Anleitung:
  • Array bauen (int [36] )
  • Schleife aufrufen und 100 mal ...
  • ..Zufallszahlen gennerieren im Wertebereich von 0 - 36..
  • .. im Array speichern
  • und was immer Du dann damit machen willst, machen!

mfg
DocRandom
 
G

Gast

Gast
Aber ich will das das Programm gleich nach dem es gestartet wird eine Ausgabe der Werte gibt !
 

DocRandom

Top Contributor
..und?
Dann machst ne 2. Schleife wo Du dann das Array ausgibst, allerdings ist das dann nur Console und keine Graphic!

mfg
DocRandom
 
G

Gast

Gast
ja es kann eh in einer Konsole sein ..
ich stell mir das ca so vor:

1 ******
2 *********
3 ****
4 ************
5 **************
5 *****************


usw.


Grüße
 

DocRandom

Top Contributor
..jo guter Ansatz, dann programmiere es mal!
Wenn Du nimmer weiter weißt werden wir Dir helfen!

mfg
DocRandom
 
G

Guest

Gast
Hallo !


Ich bin mal so weit dass ich eine Klasse geschrieben habe, die mir 10 Zufallszahlen ausgibt.
Das ganze sieht so aus:


Code:
import java.util.Random;

          public class Roulette
          {  public static void main(String[] args)
             {  Random generator = new Random();

                // zehn Mal Kugel

                for (int i = 1; i <= 10; i++)
                {  int Kugel = 1 + generator.nextInt(37);
                   System.out.print(Kugel + " ");
                }
                System.out.println();
             }
          }

und funktioniert recht gut.

Jetzt muss ich mich daran machen, die Ausgabewerte in ein Array zu bringen.
Hat da irgendjemand nen Tipp oder Denkanstóß für mich ?


Grüße
 

Wildcard

Top Contributor
Sagen wir du hast ein Array mit 37 Werten mit allen möglichen Resultaten (sind das 37 beim Roulette? ???:L )
Dann kannst du einfach in der Schleife sagen:
array[zufallszahl]++;
 

Leroy42

Top Contributor
Wildcard hat gesagt.:
(sind das 37 beim Roulette? ???:L )

Manchmal sogar 38 in den Kasinos, deren Roulettes (Rouletten? :shock: ) eine
Null und eine Doppelnull aufweisen.

Aber auch die einfache Null macht de facto den langfristigen Gewinn der Spielbank aus
 

Wildcard

Top Contributor
War mir nur nicht sicher. Bin kein großer Zocker :wink:
Verstehst du den Ansatz den ich dir gegeben habe?
 
G

Gast

Gast
naja ich les gerade über Arrays ...
noch kann ich ehrlich gesagt nichts damit anfangen !

Du meinst ich soll eine Zweite Schleife erstellen ?

Grüße
 
G

Gast

Gast
hmm ...

int Zufallszahl [] = { ????? }


aber wie bekomme ich meine 10 Zufallszahlen in diese Klammern ... Geht das vielleicht mit einem Scanner ?!
 

Wildcard

Top Contributor
Diese Art der initialisierung benutzt man wenn die Werte bereits bekannt sind.
In deinem Fall muss das so aussehen (Variablen schreibt man klein):
int zufallszahl [] = new int[37];
 
G

gast

Gast
Code:
          public class Roulette
          {  public static void main(String[] args)
             {  Random generator = new Random();
                int array[] = new int;
                // zehn Mal Kugel

                for (int i = 1; i <= 37; i++)
                {  array[i] = 1 + generator.nextInt(37);
                   System.out.print(Kugel + " ");
                }
                System.out.println();
             }
          }
 
G

Guest

Gast
oops
Code:
          public class Roulette
          {  public static void main(String[] args)
             {  Random generator = new Random();
                int array[] = new int[37];
                // zehn Mal Kugel

                for (int i = 1; i <= 37; i++)
                {  array[i] = 1 + generator.nextInt(37);
                   System.out.print(Kugel + " ");
                }
                System.out.println();
             }
          }
[/quote]
 

Wildcard

Top Contributor
Code:
          public class Roulette
          {  public static void main(String[] args)
             {  Random generator = new Random();
                int array[] = new int[37];
                // zehn Mal Kugel

                for (int i = 0; i <= 100; i++)
                {  
                   array[generator.nextInt(37)]++;
                }
             }
          }
 
G

Gast

Gast
Hallo !

Vielen Dank erstmal. Jetzt werden also die Ergebnisse nicht mehr ausgegeben, sondern in einem Feld angelegt, oder ?

Das heißt jetzt geht es darum, diese Werte irgendwie zu "Ordnen" und zu "zählen"

Lg
 
G

Gast

Gast
und wie komme ich zur Ausgabe meines Feldes, um es in so eine Form zu bringen ?

1 ****
2 *********
3 **


Grüße
 

Wildcard

Top Contributor
Mit 2 verschachtelten for-Schleifen.
Mit einer läufst du über das Array, in der anderen schreibst du so viele '*' wie die Zahl in diesem Feld des Arrays.
 
G

Gast

Gast
hm ... hab jetzt ein wenig drüber nachgedacht, bij aber noch zu keinem sinnvollen Ansatz gekommen.

Ich versuchs weiter !


Grüße
 
L

Leroy42a

Gast
Nimm mal das als Grundlage:

Code:
int anzahlen[37] = new int[37];
// Füllen des Arrays mit anzahlen[randomWert]++
for (int i=0; i < anzahlen.length; ++i) {
  System.out.printf("%2d : ", i);
  for (int j=0; j < anzahlen[i].length; ++j)
    System.out.print('*');
  System.out.println();
}
 
G

Gast

Gast
Vielen Dank erstmal Leroy42a !


Zum Teil versteh ich diesen Ansatz, aber eben nur zum Teil ... ;)
Kannst du mir vielleicht irgendeine Seite empfehlen, wo diese Art von for Schleife genauer erklärt wird ?

Ich habe mir nämlich vorgenommen nicht in mein Programm rein zu schreiben was ich nicht zu hunder Prozent verstehe ;)

Grüße
 
L

Leroy42a

Gast
Ich gehe mal davon aus daß dir die äußere Schleife
(die mit der Laufvariablen i) klar ist. Sie ist da um die
einzelnen Anzahlen der Roulettewürfe zu durchlaufen.

Code:
for (int j=0; j < anzahlen[i].length; ++j) 
    System.out.print('*');
  System.out.printnln();

Hier werden, für jedes i, soviele Sternchen ausgegeben
wie der Wert des jeweiligen anzahlen beträgt.

Beispiel: Sei i=7 und anzahlen = 3 dann steht in der
inneren Schleife einfach nur

Code:
for (int j=0; j < 3; ++j) 
    System.out.print('*');

j durchläuft also die Werte [0,1,2] und gibt dementsprechend 3 Sternchen aus.
(print statt println damit die Sternchen in eine Zeile geschrieben werden)
Nach Beendigung der Schleife wird mit System.out.println() die Ausgabezeile beendet.

Ich wüßte nicht, wie ich es noch verständlicher erklären könnte. ???:L
 
G

Gast

Gast
Vielen vielen Dank !!

Noch verständlicher gehts eh nicht ;) Jetzt hab ichs kapiert, vielen Dank !!!
 
G

Guest

Gast
Code:
import java.util.Random;

           public class Wuerfel 
          {  public static void main(String[] args) 
             {  Random generator = new Random(); 
                int array[] = new int[37]; 
                // zehn Mal Kugel 

                for (int i = 0; i <= 100; i++) 
                {  
                   array[generator.nextInt(37)]++; 
                } 
             } 
            
           {  int anzahlen[37] = new int[37]; 
            
            }

        
              for (int i=0; i < anzahlen.length; ++i) { 
                System.out.print("%2d : ", i); 
 		 for (int j=0; j < anzahlen[i].length; ++j) 
  		  System.out.print('*'); 
 		 System.out.println(); 
		}
              }


Jetzt muss ich das ganze mal in eine halbwegs schöne Form bringen ... !


Grüße
 
L

Leroy42a

Gast
Code:
import java.util.Random; 

public class Wuerfel {
  public static void main(String[] args) {
    Random generator = new Random(); 
    int array[] = new int[37]; 
    // zehn Mal Kugel 
    for (int i = 0; i <= 100; i++) {  
      array[generator.nextInt(37)]++; 
    } 
    for (int i=0; i < array.length; ++i) { 
      System.out.print("%2d : ", i); 
      for (int j=0; j < array[i].length; ++j) 
        System.out.print('*'); 
      System.out.println(); 
    } 
  }
}

Es wäre besser, wenn du dir gleich von Anfang an diesen Stil
der Einrückung angewöhnst:

Code:
public class Würfel {
  public static void main(String[] args) {

Der Stil

Code:
public class Würfel
  {  public static void main(String[] args)
     {  ...

ist ziemlich daneben. :autsch:
 
L

Leroy42a

Gast
Noch ein Fehler

Code:
for (int j=0; j < array[i].length; ++j)
muß heissen
Code:
for (int j=0; j < array[i]; ++j)
 
G

Guest

Gast
dercheffe hat gesagt.:
ein Roulette Tisch funktioniert nicht nach dem zufall Prinzip?
es gibt da einen fall, dass zwei physiker, mithilfe einer ins kasino geschmuggelten kamera, die an einen rechner angeschlossen war... vorhergesagt haben, wo di ekugel landet... da es berechnbar ist, da im geschlossenen raum ja kaum luftströme sind... nur ma so ...
 
G

Guest

Gast
Code:
import java.util.Random; 

public class Roulette { 
  public static void main(String[] args) { 
    Random generator = new Random(); 
    int array[] = new int[37]; 
    // zehn Mal Kugel 
    for (int i = 0; i <= 100; i++) {  
      array[generator.nextInt(37)]++; 
    } 
    for (int i=0; i < array.length; ++i) { 
      System.out.print("%2d : ", i); 
      for (int j=0; j < array[i]; ++j) 
        System.out.print('*'); 
      System.out.println(); 
    } 
  } 
}

sollte das ca so aussehen ?


Grüße
 
G

Gast

Gast
Hallo !

beim kompilieren gibts eine:

Roulette.java:12: cannot find symbol
symbol: mehtod print (java.lang.String,int)
location: class java.io.PrintStream
System.out.print("%2d : " ,i);
1error


mfg und danke
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben