Mittelwert berechnen

virtual12

Aktives Mitglied
Ich habe ein Programm geschrieben, das eine vom Benutzer vorgegebene Anzahl an Zufallszahlen ausgibt. Das funktioniert auch. Jetzt möchte ich aber noch den Mittelwert der ausgegebenen Zufallszahlen berechnen. Dass man dafür alle ausgegebenen Werte addieren muss und dann durch die Anzahl der Werte teilen muss, ist mir klar. Wie schaffe ich das in meinem Programm umzusetzen? Versucht habe ich das mit double Average und nachfolgender Ausgabeanweisung. Hier kommt aber das falsche Ergebnis. Warum? Was mache ich falsch? Hat jemand einen Vorschlag, wie ich es richtig mache, damit am Ende der Mittelwert rauskommt?
Hier mein bisheriger Versuch:
Code:
public class AverageZufall {
  public static void main(String[]args) {
   int N = Integer.parseInt(args[0]);
   int i = 1;
   double Zufall = Math.random();
    while(i<=N) {
  System.out.println(Zufall);
   Zufall = Math.random();
   i = i+1;
  }
   double Average = (i)/(N);
  System.out.println(Average);
}
}
 

virtual12

Aktives Mitglied
Danke für deine Antwort, aber leider hilft mir der Link noch nicht weiter. Kann mir vielleicht jemand konkret an meinem Beispiel erklären, was und warum ich das falsch gemacht habe und wie es richtig geht? Danke im voraus.
 

virtual12

Aktives Mitglied
Zum Beispiel den Wert 5 und dann müssen die 5 Zufallswerte ja addiert werden und für die Berechnung des Mittelwertes wieder durch 5 geteilt werden.
 

Bitfehler

Bekanntes Mitglied
Dann addiere doch mal die Zufallswerte ;)

Code:
public class AverageZufall {
  public static void main(String[]args) {
  
   int n = Integer.parseInt(args[0]);
   int i = 1;
   double zufall = 0.0;
   while(i<=n) {
      zufall = zufall + Math.random();
      i++;
  }
   double average = zufall/i;
   System.out.println(average);
}
}
 

MWin123

Bekanntes Mitglied
Weißt du überhaupt was "n++" macht?
Das ist eine Abkürzung für "n = n + 1".

Da du nicht 1, sondern die Zufallszahlen addieren willst, ist das falsch.

int sum = 0
sum = sum + 10 oder kurz sum += 10

Statt 10 musst du natürlich deine Zufallszahl nehmen.
 

virtual12

Aktives Mitglied
Also durch N teilen führt nicht zum richtigen Ergebnis. Aber ich muss doch durch die Anzahl der Zufallszahlen teilen und das ist doch die vom Benutzer vorgegebene Zahl, die ich mit N bezeichnet habe? Was ist hier falsch? Verstehe das nicht nicht so ganz.
 

virtual12

Aktives Mitglied
Sorry, habe den Code vergessen einzufügen
Code:
public class AverageZufall {
  public static void main(String[]args) {
   int N = Integer.parseInt(args[0]);
   int i = 1;
   double Zufall = Math.random();
    while(i<=N) {
  System.out.println(Zufall);
   Zufall = Math.random();
   i = i+1;
  }
   double sum = 0;
   sum = sum + Zufall;
   double Average = sum/N;
  System.out.println("Average is: " + Average);
}
}
 

virtual12

Aktives Mitglied
Code:
public class AverageZufall {
  public static void main(String[]args) {
     int N = Integer.parseInt(args[0]);
        int i = 1;
        double Zufall = Math.random();
           while(i<=N) {
     System.out.println(Zufall);
      Zufall = Math.random();
          i = i+1;
  }
      double sum = 0;
      sum = sum + Zufall;
      double Average = sum/N;
    System.out.println("Average is: " + Average);
  }
}

Da ich noch Anfänger bin, kann ich mit deinem Hinweis den Code einzurücken und den Fehler dadurch zu sehen leider nichts anfangen. Bin noch ratlos. So hätte ich den Code eingerückt. Ob das gut oder schlecht ist, weiß ich nicht. Nur sehen kann ich meinen Fehler leider im Moment noch nicht. Bitte deshalb noch einmal um Hilfe.
 

MWin123

Bekanntes Mitglied
Ich hab dir den Code mal richtig eingerückt.

Java:
public static void main(String[] args) {
    int n = Integer.parseInt(args[0]);
    int i = 1;
    double Zufall = Math.random();

    while (i <= n) {
        System.out.println(Zufall);
        Zufall = Math.random();
        i = i + 1;
    }

    double sum = 0;
    sum = sum + Zufall;
    double Average = sum / n;
    System.out.println("Average is: " + Average);
}
So siehst du auch wo die while Schleife aufhört.
Du weist Zufall zwar immer einen neuen Wert zu, addierst ihn aber nicht zur Summe. Du addierst nur weiter unten den letzten Wert zur Summe.
 

virtual12

Aktives Mitglied
Also meine Schleife sieht jetzt so aus:
Code:
while (i <= n) {
            System.out.println(Zufall);
            Zufall = Math.random();
            i = i + 1;
            double sum = 0;
            sum = sum + Zufall;
      }
Ich verstehe aber leider immer noch nicht, wie ich alle Zufallszahlen addieren kann und nicht nur die letzte? Ich weiß einfach nicht , wie ich das aufschreiben kann.
 

MWin123

Bekanntes Mitglied
Wie würdest du das jetzt ausgeben?
Du hast ja außerhalb der Schleife keinen Zugriff auf sum.

double sum = 0; muss außerhalb der Schleife stehen.
 

Bitfehler

Bekanntes Mitglied
Code:
while (i <= n) {                                   //Schleifenbedingung
            System.out.println(Zufall);       //Gebe die Var Zufall aus
            Zufall = Math.random();          // Zufall = einer zufälligen Zahl
            i = i + 1;                                ///Erhöhe i
            double sum = 0;                     //Setzte sum auf 0
            sum = sum + Zufall;               //addiere auf sum Zufall
      }

Aktuell durchläufst du die Schleife n-Mal. Bei jeden Durchlauf werden die fünf Zeilen Code ausgeführt. Also wird bei jedem Durchlauf die Variable sum auf 0 gesetzt und dann der neue zufällige Wert addiert. Da du die Summe aber immer wieder auf 0 setzt, verlierst du dein bisherigen Ergebnis. So weit nachvollziehbar?

Wenn du die Zeile double sum = 0 außerhalb deiner Schleife hast, ist die Variable sum innerhalb der Schleife vorhanden und kann verwendet werden. Wenn man nun noch auf das Setzten von sum = 0 innerhalb der Schleife verzichtet, kannst du wie gewünscht addieren. Du behältst das dein Zwischenergebnis und rechnest da n-Mal einen Wert drauf.

Ändere doch bei Gelegenheit deine Variable Zufall in zufall. Danke
 

virtual12

Aktives Mitglied
Okay, das ist von deinen Erläuterungen nachvollziehbar, aber ich bin immer noch unsicher in der Schreibweise. Habe jetzt folgendes, was aber immer noch nicht stimmt.
Code:
public class AverageZufall {
public static void main(String[] args) {
        int n = Integer.parseInt(args[0]);
        int i = 1;
        double zufall = Math.random();
        double sum = 0;

        while (i <= n) {                                   //Schleifenbedingung
            System.out.println(zufall);       //Gebe die Var Zufall aus
            zufall = Math.random();          // Zufall = einer zufälligen Zahl
            i = i + 1;                                ///Erhöhe i
                                 //Setzte sum auf 0
            sum = sum + zufall;               //addiere auf sum Zufall
      }


        double Average = sum / n;
        System.out.println("Average is: " + Average);
    }
}

Was mache ich jetzt noch falsch? Oder habe ich deine Erklärung völlig falsch verstanden?
 

Bitfehler

Bekanntes Mitglied
Ich würde dir noch folgendes nahe legen:
  • double zufall = 0
    Deins ist auch richtig, doch der erste zufällige initale Wert wird von dir nicht verwendet, da er in der Schleife überschrieben wird.
  • Tausche doch mal die ersten beiden Zeilen innerhalb deiner Schleife. Das wird dir beim Nachvollziehen helfen. Dann wird nämlich die neu generierte Zahl ausgegeben. Ändert aber nichts an der Logik.
  • Die Variable Average klein schreiben.
Noch Fragen oder ungewolltes Systemverhalten?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
G Array Mittelwert berechnen, wie? Java Basics - Anfänger-Themen 8
C Mittelwert berechnen Java Basics - Anfänger-Themen 5
M Maximum, Minimum und Mittelwert berechnen Java Basics - Anfänger-Themen 25
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
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
M Methoden Mittelwert rationaler Zahlen mittels Methode Java Basics - Anfänger-Themen 4
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
L Brauch Mittelwert jeweils 3 Zahlen die durch 20 Wiederholungen geteilt werden Java Basics - Anfänger-Themen 17
G Mittelwert Java Basics - Anfänger-Themen 31
K Frage wegen Mittelwert Java Basics - Anfänger-Themen 32
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
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
laxla123 Quersumme berechnen Java Basics - Anfänger-Themen 1
I For Schleife Summe berechnen Java Basics - Anfänger-Themen 13
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
A Berechnen Moor Nachbarschaft Java Basics - Anfänger-Themen 5
E Geburtstag im Schaltjahr berechnen Java Basics - Anfänger-Themen 24
Lion.King Schaltjahr berechnen Java Basics - Anfänger-Themen 31
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
I Zuschläge berechnen Java Basics - Anfänger-Themen 15
L mit Fakultät mathematische Formel berechnen Java Basics - Anfänger-Themen 5
TanTanIsTrying Durschnitt berechnen von eingegebener Zahl bis 1 heruntergezählt Java Basics - Anfänger-Themen 9
L Präfix berechnen Java Basics - Anfänger-Themen 33
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
Aemulit Java Schaltjahr berechnen Code Java Basics - Anfänger-Themen 7
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
I Potenz berechnen mit for-Schleife Java Basics - Anfänger-Themen 3
A Standardabweichung in Java berechnen Java Basics - Anfänger-Themen 10
H Gesamtabweichung mit Array berechnen Java Basics - Anfänger-Themen 2
G Java Rabatt berechnen Java Basics - Anfänger-Themen 8
V Rückgeld berechnen Java Basics - Anfänger-Themen 6
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
Ianatrix Zahlen von a bis b berechnen Java Basics - Anfänger-Themen 7
L Max, min, Summe und Durchschnitt berechnen Java Basics - Anfänger-Themen 4
L Anhalteweg berechnen Java Basics - Anfänger-Themen 6
Aeon Erste Schritte Preise berechnen mit do-while Java Basics - Anfänger-Themen 9
M Quadratwurzel berechnen Java Basics - Anfänger-Themen 8
V Wachstum berechnen und in Ist-Formel verwenden Java Basics - Anfänger-Themen 5
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Abschreibungsplan berechnen Java Basics - Anfänger-Themen 23
V Gehalt berechnen in Java Java Basics - Anfänger-Themen 6
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
L Anzahl der benachbarten Minen berechnen und setzen Java Basics - Anfänger-Themen 15
J Array Speicherplatz berechnen Java Basics - Anfänger-Themen 35
H Eingabedaten berechnen Java Basics - Anfänger-Themen 9
B Tranportkosten berechnen mit unterschiedlichen MwSt Java Basics - Anfänger-Themen 9
L Anzahl der Paare deren Summe = 0 ergibt berechnen Java Basics - Anfänger-Themen 0
V Erste Schritte Berechnen von Sinus; sin(x) ohne Math.* Java Basics - Anfänger-Themen 1
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Sparplan berechnen Java Basics - Anfänger-Themen 4
F Abstand zum Durchschnitt von 5 Zahlen berechnen... Java Basics - Anfänger-Themen 16
B java.util.Date berechnen Java Basics - Anfänger-Themen 11
CptK Best Practice Schussparabel berechnen Java Basics - Anfänger-Themen 3
T Modulo / Pow berechnen Java Basics - Anfänger-Themen 4
E Statistische Kennzahlen berechnen Java Basics - Anfänger-Themen 2
F Switch Case Modulo berechnen Java Basics - Anfänger-Themen 12
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
C Preis berechnen mit Java Java Basics - Anfänger-Themen 4
B Zahl in String abspeichern und später berechnen Java Basics - Anfänger-Themen 15
N Best Practice Image recognition fuzzy Superhash berechnen Java Basics - Anfänger-Themen 1
Dawinartor Erste Schritte Schaltjahr berechnen Java Basics - Anfänger-Themen 1
L Pi berechnen Java Basics - Anfänger-Themen 1
CptK Term (als String) berechnen und ausgeben Java Basics - Anfänger-Themen 10
L Den Winkel zwischen zwei Vektoren berechnen! Java Basics - Anfänger-Themen 2
K Matrixen berechnen nach Worker Master Paradigma mit Threads Java Basics - Anfänger-Themen 4
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
I Schnittpunkt zweier Geraden berechnen Java Basics - Anfänger-Themen 25
S Compiler-Fehler Schaltjahr berechnen Java Basics - Anfänger-Themen 5
B Fakultätsfunktion Rekursiv Berechnen aber mit Array Java Basics - Anfänger-Themen 10
S Durchschnitt berechnen aus zwei Textfeldern Java Basics - Anfänger-Themen 21
D Summe berechnen mit verändertem Wert aus Schleife Java Basics - Anfänger-Themen 1
R Liga Berechnen Java Basics - Anfänger-Themen 1
P Klassen Berechnen mehrerer Map-Werte Java Basics - Anfänger-Themen 13
R Fussballtabellen berechnen Java Basics - Anfänger-Themen 12
J Fibonacci -Folge rekursiv berechnen Java Basics - Anfänger-Themen 18
J Durchschnitt jeder Zeile und und Spalte in einem 2D Arrays berechnen Java Basics - Anfänger-Themen 6
F ISBN Prüfziffer berechnen Java Basics - Anfänger-Themen 17
F Die Teilersumme einer Eingabe berechnen Java Basics - Anfänger-Themen 11
S Negafibonacci Folge berechnen Java Basics - Anfänger-Themen 24
S Primzahlen berechnen funktioniert nicht richtig Java Basics - Anfänger-Themen 1
N Mit LocalDate alter berechnen Java Basics - Anfänger-Themen 3
J Laufzeit berechnen/Laufzeitanalyse Java Basics - Anfänger-Themen 2
N Arrays mit Zufallzahlen füllen und Statistiken berechnen Java Basics - Anfänger-Themen 5
A Wochentag berechnen Java Basics - Anfänger-Themen 10
Ste3et_C0st Vectoren berechnen Java Basics - Anfänger-Themen 8
L Durchschnitt in der Schleife berechnen Java Basics - Anfänger-Themen 11
A Kreisumfang/-Fläche vom Kreis berechnen Java Basics - Anfänger-Themen 39

Ähnliche Java Themen

Neue Themen


Oben