Brauch Mittelwert jeweils 3 Zahlen die durch 20 Wiederholungen geteilt werden

LightMoto

Mitglied
Hi erstmal,

ich glaub der Titel erklärt es ziemlich komliziert^^. Ich hab jetzt 3 Würfel programmiert. Der eine heisst D6, der zweite auch und der dritte D20, ähnlich Dungeon & Dragon mässig. Ach ich poste mal denn Code, wartet.....

Java:
package tools;

public class Wuerfel2test {

    /**
     * @param args
     * @return 
     */
    public static void main(String[] args) { //main Start
        
        int[] Wuerfeleins = {1,2,3,4,5,6}; //auflistung der Zahlenwert
        int[] Wuerfelzwei = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
        int[] Wuerfeldrei = {1,2,3,4,5,6};
        int zaehler = 20; //Zähler für Wiederholung der Schleife
        
    while ( zaehler > 0){    //Beginn der Schleife
        
        int rand1 = (int) (Math.random() * 6); //Zufällig auswahl der Zahlenvorgabe
        int rand2 = (int) (Math.random() * 20);
        int rand3 = (int) (Math.random() * 6);
        
        int phrase1 = Wuerfeleins [rand1];    //Verbindung der Zufallszahl
        int phrase2 = Wuerfelzwei [rand2];
        int phrase3 = Wuerfeldrei [rand3];
        
        int ergebnis = phrase1 + phrase3; //Ausgabe der Summen (Augenzahl)
                                     
                    System.out.println("*****************************************************************");
                    System.out.println("Die Summe der Augenzahlen der beiden D6-Würfel ist "+ergebnis+"." );
                    System.out.println("Die Augenzahl des D20 ist "+phrase2+"." );
        
            if ((phrase1+phrase3) < phrase2) {    //Sagt aus welcher Würfel gewinnt
        
                    System.out.println("*****************Der D20-Würfel hat gewonnen.********************");
                    
            }else{
                if ((phrase1+phrase3) >= phrase2){    //Sagt aus welcher Würfel gewinnt
            
                    System.out.println("****************Die D6-Würfel haben gewonnen.********************");
                    }
                    
            zaehler = zaehler -1; //Zähler der Wiederholung um eins runter
                    
            }
        
            double Durchschnittphrase1 = phrase1/20;    //Sollte ergebnis der Würfel durch die Wiederholung teilen
            double Durchschnittphrase2 = phrase2/20;    //zeigt nur 0.0 
            double Durchschnittphrase3 = phrase3/20;

                    System.out.println("Der Mittelwert von 20 Würfen des ersten D6-Würfels ist: "+Durchschnittphrase1);
                    System.out.println("Der Mittelwert von 20 Würfen des zweiten D6-Würfels ist: "+Durchschnittphrase3);
                    System.out.println("Der Mittelwert von 20 Würfen des D20-Würfel ist: "+Durchschnittphrase2);
                    System.out.println("*****************************************************************");
            
        }
    
    }
}

Das Problem ist das ich aus denn 20 Würfen denn Mittelwert jedes Würfels berechnen muss. Nur leider hab ich keinen Plan wie ich das mache da ich noch ein ziemlicher Anfänger bin. Hoffe deshalb das ihr mir helfen könnt.

LG LightMoto
 

KrokoDiehl

Top Contributor
Zwei Sachen habe ich:
a) Durchschnitt errechnen. Das ist ja kein Java-Problem sondern eine einfache mathematische Sache: Durchschnitt = (x1+x2+x3+...+xN) / N
Für dich heißt das, dass du die Augen pro Würfel immer aufsummieren musst und dann am Ende teilen.

b) Das "Würfeln" finde ich etwas umstandlich gelöst. Du könntest direkt die möglichen Werte eines Würfels wie folgt holen, ohne über ein Array zu gehen:
Java:
Random rand = new Random();
int w6  = rand.nextInt(6)+1;
int w20 = rand.nextInt(20)+1;
 

punkt21

Mitglied
Speicher dir die Ergebnisse jedes Wurfes in ein Array (für jeden Würfel 1 Array), summiere danach den Inhalt dieses Arrays und teile das Ergebnis durch 20 ;)
 
G

Gast2

Gast
Hier hast du mal ein wenig Code:

Java:
        final int MAX = 20;
        int sum = 0;
        Random rand = new Random();
        for (int i = 0; i < MAX; i++) {
            int dice = rand.nextInt(6) + 1;
            System.out.println("dice " + i + ": " + dice);
            sum += dice;
        }

        double avg = sum / (double)MAX;
        System.out.println("average: " + avg);
Das rechnet dir für 20 Würfe den Durchschnitt aus.
 

Purgator

Aktives Mitglied
Aloha,
ich hoffe ich habe dich korrekt verstanden.
Wenn ja bräuchtest du noch 3 Variablen, welche z.B.
Java:
int summeWuerfel1 = 0;
int summeWuerfel2 = 0;
int summeWuerfel3 = 0;
sein könnten.
Bei jedem durchlauf addierst du die dort gewürfelte augenzahl des Würfels dazu
Java:
summeWuerfel1 += rand1;
summeWuerfel2 += rand2;
summeWuerfel3 += rand3;
und am ende gibst du den mittelwert der einzelnen Würfel aus:
Java:
System.out.println("Würfel 1 Mittelwert: " + summeWuerfel1/20);
System.out.println("Würfel 2 Mittelwert: " + summeWuerfel2/20);
System.out.println("Würfel 3 Mittelwert: " + summeWuerfel3/20);
 
G

Gast2

Gast
Java:
System.out.println("Würfel 1 Mittelwert: " + summeWuerfel1/20);
da würde ich eher durch 20.0 teilen.
 

LightMoto

Mitglied
Habe das ausprobiert, doch leider bekomme ich als Ergebnis 0,5 jeweils. Das dürfte ja nicht sein. Denn es wird ja für jeden Würfel irgend eine zahl gewürfelt und davon brauch ich ja denn Durchschnitt, oder hatte ich das falsch ausgedrück^
 
Zuletzt bearbeitet:

LightMoto

Mitglied
Ok jetzt noch mal der ganze Code^^

Java:
package tools;

public class Wuerfel2test {

    /**
     * @param args
     * @return 
     */
    public static void main(String[] args) { //main Start
        
        int[] Wuerfeleins = {1,2,3,4,5,6}; //auflistung der Zahlenwert
        int[] Wuerfelzwei = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
        int[] Wuerfeldrei = {1,2,3,4,5,6};
        int zaehler = 20; //Zähler für Wiederholung der Schleife
        
    while ( zaehler > 0){    //Beginn der Schleife
        
        int rand1 = (int) (Math.random() * 6); //Zufällig auswahl der Zahlenvorgabe
        int rand2 = (int) (Math.random() * 20);
        int rand3 = (int) (Math.random() * 6);
        
        int phrase1 = Wuerfeleins [rand1];    //Verbindung der Zufallszahl
        int phrase2 = Wuerfelzwei [rand2];
        int phrase3 = Wuerfeldrei [rand3];
        
        int ergebnis = phrase1 + phrase3; //Ausgabe der Summen (Augenzahl)
                                     
                    System.out.println("*****************************************************************");
                    System.out.println("Die Summe der Augenzahlen der beiden D6-Würfel ist "+ergebnis+"." );
                    System.out.println("Die Augenzahl des D20 ist "+phrase2+"." );
        
            if ((phrase1+phrase3) < phrase2) {    //Sagt aus welcher Würfel gewinnt
        
                    System.out.println("*****************Der D20-Würfel hat gewonnen.********************");
                    
            }else{
                if ((phrase1+phrase3) >= phrase2){    //Sagt aus welcher Würfel gewinnt
            
                    System.out.println("****************Die D6-Würfel haben gewonnen.********************");
                    }
                    
            zaehler = zaehler -1; //Zähler der Wiederholung um eins runter
                    
            }
        
            double Durchschnittphrase1 = phrase1/20;    //Sollte ergebnis der Würfel durch die Wiederholung teilen
            double Durchschnittphrase2 = phrase2/20;    //zeigt nur 0.0 
            double Durchschnittphrase3 = phrase3/20;

                    System.out.println("Der Mittelwert von 20 Würfen des ersten D6-Würfels ist: "+Durchschnittphrase1);
                    System.out.println("Der Mittelwert von 20 Würfen des zweiten D6-Würfels ist: "+Durchschnittphrase3);
                    System.out.println("Der Mittelwert von 20 Würfen des D20-Würfel ist: "+Durchschnittphrase2);
                    System.out.println("*****************************************************************");
            
            int summeWuerfel1 = 0;
            int summeWuerfel2 = 0;
            int summeWuerfel3 = 0;
                    
            summeWuerfel1 += rand1;
            summeWuerfel2 += rand2;
            summeWuerfel3 += rand3;
                    
                    System.out.println("Würfel 1 Mittelwert: " + summeWuerfel1/20.0);
                    System.out.println("Würfel 2 Mittelwert: " + summeWuerfel2/20.0);
                    System.out.println("Würfel 3 Mittelwert: " + summeWuerfel3/20.0);
                    
                    
        }
    
    }
}
 

LadyMilka

Aktives Mitglied
in der while-Schleife legts du deine Summen immer wieder wieder auf 0

Java:
            int summeWuerfel1 = 0;
            int summeWuerfel2 = 0;
            int summeWuerfel3 = 0;

diese Zeilen müssen vor die while-Schleife
 

Michael...

Top Contributor
Soll die Asugabe der Mittelwerte nicht erst nach der Schleife erfolgen? (Die Division durch 20 in der Schleife macht nicht unbedingt Sinn)
Müssten die int[] Arrays für die Würfel unbedingt sein?
Java:
public class Wuerfel2test {
	public static void main(String[] args) { // main Start
		
		int d6 = 6;
		int d20 = 20;
		
		int rounds = 3;
		
		double sum1 = 0, sum2 = 0, sum3 = 0;
		
		for (int i=1; i<=rounds; i++) {
			int rand1 = (int)(Math.random() * d6 + 1);
			int rand2 = (int)(Math.random() * d20 + 1);
			int rand3 = (int)(Math.random() * d6 + 1);
			
			sum1 +=rand1;
			sum2 +=rand2;
			sum3 +=rand3;
			
			System.out.println("*********** Runde " + i);
			System.out.println("Summe  D6: " + (rand1 +rand3));
			System.out.println("Summe D20: " + (rand2));
			if ((rand1+rand3)<rand2)
				System.out.println("      => D20 gewinnt.");
			else
				System.out.println("      => D6 gewinnt.");
			
			System.out.println("Mittelwert des ersten  D6 Wuerfels nach Runde " + i + ": " + (sum1/i));
			System.out.println("Mittelwert des zweiten D6 Wuerfels nach Runde " + i + ": " + (sum2/i));
			System.out.println("Mittelwert des D20 Wuerfels nach Runde " + i + ":        " + (sum3/i));
			System.out.println("*****************************************************************");
		}
	}
}
 

LightMoto

Mitglied
Also erstmal ganz ganz grossen dank!!!

Hab jetzt nur noch ein Problem^^. Ich möchte das er mir die Aussage über denn Mittelwert nur am ende zeigt.

Code nochmal
Java:
package tools;

public class Wuerfel2test {

    /**
     * @param args
     * @return 
     */
    public static void main(String[] args) { //main Start
        
        int[] Wuerfeleins = {1,2,3,4,5,6}; //auflistung der Zahlenwert
        int[] Wuerfelzwei = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
        int[] Wuerfeldrei = {1,2,3,4,5,6};
        int zaehler = 20; //Zähler für Wiederholung der Schleife
        
        int summeWuerfel1 = 0;
        int summeWuerfel2 = 0;
        int summeWuerfel3 = 0;
    
        
    while ( zaehler > 0){    //Beginn der Schleife
        
        int rand1 = (int) (Math.random() * 6); //Zufällig auswahl der Zahlenvorgabe
        int rand2 = (int) (Math.random() * 20);
        int rand3 = (int) (Math.random() * 6);
        
        int phrase1 = Wuerfeleins [rand1];    //Verbindung der Zufallszahl
        int phrase2 = Wuerfelzwei [rand2];
        int phrase3 = Wuerfeldrei [rand3];
        
        int ergebnis = phrase1 + phrase3; //Ausgabe der Summen (Augenzahl)
                                     
                    System.out.println("*****************************************************************");
                    System.out.println("Die Summe der Augenzahlen der beiden D6-Würfel ist "+ergebnis+"." );
                    System.out.println("Die Augenzahl des D20 ist "+phrase2+"." );
        
            if ((phrase1+phrase3) < phrase2) {    //Sagt aus welcher Würfel gewinnt
        
                    System.out.println("*****************Der D20-Würfel hat gewonnen.********************");
                    
            }else{
                if ((phrase1+phrase3) >= phrase2){    //Sagt aus welcher Würfel gewinnt
            
                    System.out.println("****************Die D6-Würfel haben gewonnen.********************");
                    }
                    
            zaehler = zaehler -1; //Zähler der Wiederholung um eins runter
                    
            }
        
            summeWuerfel1 += rand1;
            summeWuerfel2 += rand2;
            summeWuerfel3 += rand3;
                    
                    System.out.println("Der Mittelwert von 20 Würfen des ersten D6-Würfels ist: " + summeWuerfel1/20.0);
                    System.out.println("Der Mittelwert von 20 Würfen des zweiten D6-Würfels ist: " + summeWuerfel3/20.0);
                    System.out.println("Der Mittelwert von 20 Würfen des D20-Würfels ist: " + summeWuerfel2/20.0);
                    
                    
        }
    
    }
}

Hab schon versucht es in die schleife ein zubauen mit else
Java:
package tools;

public class Wuerfel2test {

    /**
     * @param args
     * @return 
     */
    public static void main(String[] args) { //main Start
        
        int[] Wuerfeleins = {1,2,3,4,5,6}; //auflistung der Zahlenwert
        int[] Wuerfelzwei = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
        int[] Wuerfeldrei = {1,2,3,4,5,6};
        int zaehler = 20; //Zähler für Wiederholung der Schleife
        
        int summeWuerfel1 = 0;
        int summeWuerfel2 = 0;
        int summeWuerfel3 = 0;
    
        
    while ( zaehler > 0){    //Beginn der Schleife
        
        int rand1 = (int) (Math.random() * 6); //Zufällig auswahl der Zahlenvorgabe
        int rand2 = (int) (Math.random() * 20);
        int rand3 = (int) (Math.random() * 6);
        
        int phrase1 = Wuerfeleins [rand1];    //Verbindung der Zufallszahl
        int phrase2 = Wuerfelzwei [rand2];
        int phrase3 = Wuerfeldrei [rand3];
        
        int ergebnis = phrase1 + phrase3; //Ausgabe der Summen (Augenzahl)
                                     
                    System.out.println("*****************************************************************");
                    System.out.println("Die Summe der Augenzahlen der beiden D6-Würfel ist "+ergebnis+"." );
                    System.out.println("Die Augenzahl des D20 ist "+phrase2+"." );
        
            if ((phrase1+phrase3) < phrase2) {    //Sagt aus welcher Würfel gewinnt
        
                    System.out.println("*****************Der D20-Würfel hat gewonnen.********************");
                    
            }else{
                if ((phrase1+phrase3) >= phrase2){    //Sagt aus welcher Würfel gewinnt
            
                    System.out.println("****************Die D6-Würfel haben gewonnen.********************");
                    }
                    
            zaehler = zaehler -1; //Zähler der Wiederholung um eins runter
                    
            }else{ //Wird aber ein Fehler angezeigt!!!
        
            summeWuerfel1 += rand1;
            summeWuerfel2 += rand2;
            summeWuerfel3 += rand3;
                    
                    System.out.println("Der Mittelwert von 20 Würfen des ersten D6-Würfels ist: " + summeWuerfel1/20.0);
                    System.out.println("Der Mittelwert von 20 Würfen des zweiten D6-Würfels ist: " + summeWuerfel3/20.0);
                    System.out.println("Der Mittelwert von 20 Würfen des D20-Würfels ist: " + summeWuerfel2/20.0);
                    
            }        
        }
    
    }
}
 

JavaKnight

Mitglied
Richtig. Wie LadyMilka schon sagte. Außerdem hast du den Wiederholungszähler nicht immer runter gezählt sondern nur wenn die D6 Würfel gewonnen haben. ;-)

Java:
package tools;
 
public class Wuerfel2test
{

  /**
   * @param args
   * @return 
   */
  public static void main(String[] args)
  { //main Start

    int zaehler = 20; //Zähler für Wiederholung der Schleife

    int summeWuerfel1 = 0;
    int summeWuerfel2 = 0;
    int summeWuerfel3 = 0;

    while (zaehler > 0)
    { //Beginn der Schleife

      int phrase1 = (int) (Math.random() * 6); //Zufällig auswahl der Zahlenvorgabe
      int phrase2 = (int) (Math.random() * 20);
      int phrase3 = (int) (Math.random() * 6);

      int ergebnis = phrase1 + phrase3; //Ausgabe der Summen (Augenzahl)

      System.out.println("*****************************************************************");
      System.out.println("Die Summe der Augenzahlen der beiden D6-Würfel ist " + ergebnis + ".");
      System.out.println("Die Augenzahl des D20 ist " + phrase2 + ".");

      if ((phrase1 + phrase3) < phrase2)
      { //Sagt aus welcher Würfel gewinnt

        System.out.println("*****************Der D20-Würfel hat gewonnen.********************");

      }
      else
      {
        if ((phrase1 + phrase3) >= phrase2)
        { //Sagt aus welcher Würfel gewinnt

          System.out.println("****************Die D6-Würfel haben gewonnen.********************");
        }
      }

      zaehler = zaehler - 1; //Zähler der Wiederholung um eins runter

      summeWuerfel1 += phrase1;
      summeWuerfel2 += phrase2;
      summeWuerfel3 += phrase3;

      System.out.println("Mittelwerte nach " + (20 - zaehler) + " Würfen:");
      System.out.println("Würfel 1 Mittelwert: " + (summeWuerfel1 / (20.0 - zaehler)));
      System.out.println("Würfel 2 Mittelwert: " + (summeWuerfel2 / (20.0 - zaehler)));
      System.out.println("Würfel 3 Mittelwert: " + (summeWuerfel3 / (20.0 - zaehler)));
    }

    double Durchschnittphrase1 = summeWuerfel1 / 20; //Sollte ergebnis der Würfel durch die Wiederholung teilen
    double Durchschnittphrase2 = summeWuerfel2 / 20; //zeigt nur 0.0 
    double Durchschnittphrase3 = summeWuerfel3 / 20;

    System.out.println("Der Mittelwert von 20 Würfen des ersten D6-Würfels ist: " + Durchschnittphrase1);
    System.out.println("Der Mittelwert von 20 Würfen des zweiten D6-Würfels ist: " + Durchschnittphrase3);
    System.out.println("Der Mittelwert von 20 Würfen des D20-Würfel ist: " + Durchschnittphrase2);
    System.out.println("*****************************************************************");

  }
}
 

LightMoto

Mitglied
Hab es wie JavaKnight gesagt hat gemacht. Gut ist das zum schluss der auswurf kommt, aber leider hab ich immer noch die Aussage dazwischen. Wenn ich die weg mache gekomme ich aber falsche wert raus! (Also wenn ich System.out.println() weg mache. Müsste er nicht dennoch die Wert speichern?!
 

Michael...

Top Contributor
Java:
double Durchschnittphrase1 = summeWuerfel1 / 20;
Wenn man eine Ganzzahl durch eine Ganzzahl teilt bekommt man wieder eine Ganzzahl
Also statt durch 20 musst Du durch 20.0 teilen.
 

LightMoto

Mitglied
Stimmt^^ Danke nochmal an alle für die tolle und besonders schnelle Hilfe.

Als Anfänger hat man es nicht leicht. Hoffe mein Code ist dennoch nicht so schlecht gewesen, natürlich mit eurer Hilfe noch besser. Hab nämlich auch erst seit 2 Wochen damit angefangen:D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Brauch Hilfe für Java Programm Java Basics - Anfänger-Themen 12
S Methoden Brauch Beispiele Java Basics - Anfänger-Themen 6
J Was brauch ich zum programmieren Java Basics - Anfänger-Themen 14
D brauch hillfe komm nicht mehr weiter... Java Basics - Anfänger-Themen 10
J Brauch kurz hilfe bei nem kleinem Zahlenschloss Programm. :) Java Basics - Anfänger-Themen 12
A Am Buch lesen, nun brauch ich eure Hilfe um mir super() zu erklären Java Basics - Anfänger-Themen 4
M Java Rätsel (Geocaching) - Brauch Hilfe dazu! Java Basics - Anfänger-Themen 15
M Was brauch ich alles für Java Programmieren Java Basics - Anfänger-Themen 14
F Komme aus der Delphi-Welt und brauch jetz Java. Java Basics - Anfänger-Themen 5
H Brauch bei programmierung von quiz unterstützung Java Basics - Anfänger-Themen 11
K brauch dringend Hilfe *.jar abänder Java Basics - Anfänger-Themen 2
M Brauch ich dazu clone()? Java Basics - Anfänger-Themen 5
S Brauch mal eure Hilfe . Java Basics - Anfänger-Themen 7
G Wieso brauch java keine main() Methode? Java Basics - Anfänger-Themen 20
N String.replace brauch mal Hilfe Java Basics - Anfänger-Themen 2
G Was brauch ich alles Java Basics - Anfänger-Themen 7
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
P Mittelwert Arrayelemente berechnen Fehler Java Basics - Anfänger-Themen 5
J Variablen arithmetischen Mittelwert berechnen Java Basics - Anfänger-Themen 5
M Erste Schritte Mittelwert berechnen -> Methode in der Methode? Java Basics - Anfänger-Themen 14
P Erste Schritte Mittelwert zeitlich abhängiger Werte Java Basics - Anfänger-Themen 1
R Werte aus Array addieren und Mittelwert bilden Java Basics - Anfänger-Themen 2
G Array Mittelwert berechnen, wie? Java Basics - Anfänger-Themen 8
M Methoden Mittelwert rationaler Zahlen mittels Methode Java Basics - Anfänger-Themen 4
V Mittelwert berechnen Java Basics - Anfänger-Themen 31
F Gewichteter Mittelwert über eine Zeitperiode Java Basics - Anfänger-Themen 3
N Erste Schritte Mittelwert in Array Java Basics - Anfänger-Themen 4
P Mittelwert rekursiv Java Basics - Anfänger-Themen 13
C Mittelwert berechnen Java Basics - Anfänger-Themen 5
G Mittelwert Java Basics - Anfänger-Themen 31
K Frage wegen Mittelwert Java Basics - Anfänger-Themen 32
M Maximum, Minimum und Mittelwert berechnen Java Basics - Anfänger-Themen 25
B Notenauswertung: Einlesen der Anzahl, Bildung Mittelwert Java Basics - Anfänger-Themen 8
P Mittelwert, Datei einlesen. ich verzweifle Java Basics - Anfänger-Themen 3
N Mittelwert (fast fertig, nur noch 2 fehler ;-) ) Java Basics - Anfänger-Themen 14
M Programm soll n Zahlen von der Tastatur lesen(Mittelwert) Java Basics - Anfänger-Themen 8
I 12 Spalten von jeweils 30 Zahlen in Konsole ausgeben Java Basics - Anfänger-Themen 6
B Jeweils den Parent bekommen -> mehrere Ebenen Java Basics - Anfänger-Themen 2
N Grafische Programmierung mit jeweils anderen Bildern bei versch. Ergebnissen Java Basics - Anfänger-Themen 9
O viele Name mit jeweils zugehörigen Status in .txt Speichern Java Basics - Anfänger-Themen 16
D Erste und letzte 3 Buchst. eines Str. in jeweils ein Array Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben