# Übungsaufgabe: Zufallszahlen und Statistiken



## derHulki (9. Mai 2015)

edit:Bitte verschieben, falsches Unterforum.

Hallo bin relativ neu in der Programmierwelt und hätte eine Frage zu einer Aufgabe:

Erzeugen Sie in einer Methode 

Zufallszahlen zwischen 1.0 und 10.0 und ermitteln Sie für diese Zahlen Mittelwert, Minimum und Maximum! Die Anzahl der Zahlen kann der Methode als Übergabeparameter übergebenwerden. Die drei Ergebniswerte sollen in einer dafür geeigneten Datenstruktur zurückgegeben werden. Achtung: Sie dürfen dabei keine Container für Ihre Lösung verwenden!!!

Hier meine bisherige "Leistung". Ich komme nicht darauf wie ich das Minimum und Maximum erfrage.
Mein Ansatz dafür ist, dass ich meine Zufallszahlen irgendwie speichern muss, also am Ende auf die einzelnen generierten Zufallszahlen zugreifen kann, so ich wie es hab liefert er mir immer für das Minimum und Maximum die zuletzt generierte Zufallszahl, weil ich ja so erg deklariert hab.


```
import java.util.Random;

public class adfdf {
    public static void main(String[]args){
        System.out.println(adfdf.zufallszahl(3));
    }
    
    

         
       public static double zufallszahl(int zahlen){
            double minimum = 0.0;
            double maximum = 10.0;
            double erg = 0;
            double summe = 0;
            double mittelwert = 0;
            
            double zufallszahlenMinimum = 0;
            double zufallszahlenMaximum = 0;
            
            
            for (int i = 0; i<zahlen; i++){
                erg = Math.random()*(maximum - minimum + 1) + minimum;
                summe = erg + summe;
                System.out.println("Die Zufallszahlen sind: " + erg);
                mittelwert = summe / 2;
                zufallszahlenMinimum = Double.min(erg, erg);
                zufallszahlenMaximum = Double.max(erg, erg);
            }
                
            System.out.println("Der Mittelwert ist: " + mittelwert);
            System.out.println("Das Maximum ist " + zufallszahlenMaximum);
            System.out.println("Das Minimum ist " + zufallszahlenMinimum);
            return  summe;
}
}
```


Hoffe ihr könnt mir helfen.

mfg
derHulki


----------



## InfectedBytes (9. Mai 2015)

Erstmal verwende bitte 
	
	
	
	





```
-Tags um deinen Code darzustellen.
Ansonsten ist dein Problem unter anderem hier:
[code=Java]
zufallszahlenMinimum = Double.min(erg, erg);
zufallszahlenMaximum = Double.max(erg, erg);
```
So funktioniert das nicht, denn das Minimum vom erg und erg ist natürlich erg. 
Das neue Minimum ist natürlich das Minimum vom neuen Wert und dem alten Minimum:

```
zufallszahlenMinimum = Double.min(zufallszahlenMinimum, erg);
```
Außerdem solltest du das minimum mit einem großen Wert initialisieren, denn wenn es mit 0 initialisiert wird, ist es immer kleiner als deine zufallszahlen! double zufallszahlenMinimum = Double.MAX_VALUE


----------



## derHulki (10. Mai 2015)

Ich habe das jetzt so übernommen und es funktioniert, aber verstehen tu ich es noch nicht.

Warum muss ich das zufallszahlenMinimum mit einer großen Zahl(hier Double.MAX_VALUE) initialisieren?
Ich hab das so verstanden das man die einzelnen Ergebnisse der generierten Zufallszahlen vergleichen muss, warum zuerst mit zufallszahlenMinimum?

[Java]
zufallszahlenMinimum = Double.MAX_VALUE;
zufallszahlenMinimum = Double.min(zufallszahlenMinimum, erg);
[/code]

Also vergleicht er beim 1. Schleifendurchlauf eine große Zahl mit der ersten Zufallszahl (hier erg) und initialisert für zufallszahlenMinimum dann die größere Zahl?
Was ist wenn die große Zahl größer als erg ist?

Hoffe du/ihr könnt mich verstehen.

mfg
derHulki


----------



## InfectedBytes (10. Mai 2015)

Wenn du zufallszahlenMinimum mit 0 initialisierst, dann ist eben diese 0 das minimum, obwohl deine Zufallszahlen alle größer 0 sind. 
Deswegen initialisiert man das minimum mit einem großen Wert, damit auf jedenfall eine deiner Zufallszahlen kleiner ist.


----------



## derHulki (16. Mai 2015)

Ok vielen danke, hab das jetzt verstanden.


Bin immernoch fleißig am üben und komme nicht ganz mit der toString() Mehtode zurecht.
Habe hier eine Aufgabe für Polynome geschrieben aber er liefert mir in Eclipse immer den Paketnamen.


```
import java.util.Arrays;

public class Polynomial {
double[] coefficients;
    
    public Polynomial(double[] coefficients){
        this.coefficients = coefficients;

    
    }

    public String toString(){
        String s = "";
        for (int i=0;i<coefficients.length;i++){
            if (i==0) {
                s = coefficients[i] + "x^" + i;
                
            }else{
                if(coefficients[i]<0){
                    s+= coefficients[i] + "x^" + i;
                    
                }else{
                    s += "+" + coefficients[i] + "x^" + i;
                }
            }
        } return s;
        
    
    }
    


public static void main (String[]args){
        Polynomial[] poly = new Polynomial[1];
    System.out.println(poly.toString());
            
    }
}
```

Auch wenn ich den Methodenname austausche und extra die toString Methode überschreibe, klappt es nicht:

[Java]
@Override
    public String toString(){
        return poly();
    }
[/code]

mfg


----------



## InfectedBytes (16. Mai 2015)

Du erzeugst ein Polynomial Array mit der Länge 1. d.h. dein poly array kann ein Element vom Typ Polynomial aufnehmen, jedoch weißt du dieses Element nie zu. 
Ich vermute mal du willst gar kein Array, sondern direkt ein Objekt von Polynomial:

```
Polynomial poly = new Polynomial( new double[] { 1, 2, 3 } );
```

Falls du tatsächlich ein Array von Polynomen haben willst, solltest du natürlich erstmal die einzelnen Elemente zuweisen und für die toString könntest folgendes machen: println( Arrays.toString(polyArray) )
Dies ist nötig da du auf einem Array toString aufrufst, und dementsprechend nicht deine eigene toString aufgerufen wird, sondern eben die des Arrays. Arrays.toString erzeugt dir einen String, welcher aus dem kombinierten toStrings der Elemente besteht.


----------



## derHulki (17. Mai 2015)

Genau ich möchte direkt ein Objekt von Polynomial.
Das klappt mit deinem Code perfekt, danke!

Aber das mit dem Array von Polynomail kann ich nicht ganz nachvollziehen, ohne die Elemente zuzuweisen liefert er mir immer null, ok soweit.
Wenn ich aber einzelne Werte zuweise liefert er mit dem Aufruf println( Arrays.toString(polyArray) ) immernoch null, warum?

mfg


----------

