# Normalverteilte Zufallszahlen mit benutzerdefiniertem/r EW/Var



## NYK (20. Nov 2009)

Hallo,

ich bin Java-Anfänger mit folgendem Problem:
Gesucht sind normalverteilte Zufallszahlen, wobei Erwartungswert und Varianz vom Benutzer definiert werden.
Standardnormalverteilte Zufallszahlen mit nextGaussian() sind mir klar. Mit der Gleichverteilung mit nextDouble()
hatte ich auch keine Probleme. (Importiert habe ich dazu je java.util.Random!)

Nachdem ich reichlich Google befragt habe, bin ich auf folgende Sachen dazu gestoßen:

- Class Random mit nextGaussian (wie ich meine, nur für Standardnormalverteilung)
--> Link: Random (Java 2 Platform SE v1.4.2)

- Class Normal mit nextDouble(double mean, double standardDeviation)
--> Link: Normal (Colt 1.2.0 - API Specification))

- Class Randoms mit nextGaussian(double mean, double variance)
--> Link: Randoms (Mallet 2 API))

Ich bin nach vielen Versuchen leider noch immer nicht in der Lage, die oben genannten Sachen praktisch umzusetzen.
Sollte dieses Thema bereits in dieser Form besprochen worden sein, dann habe ich es wohl unter den dutzenden 'Zufallszahlen-Threads' übersehen!

Freue mich sehr über eure Hilfe!


----------



## SlaterB (21. Nov 2009)

> Gesucht sind normalverteilte Zufallszahlen, wobei Erwartungswert und Varianz vom Benutzer definiert werden.
[..]
> - Class Normal mit nextDouble(double mean, double standardDeviation)

?!


----------



## Guybrush Threepwood (21. Nov 2009)

Du kannst einfach die Zufallszahl nehmen und umrechnen.
Das geht so: double x = m + (Random.nextGaussian()*sd), wobei m der Mittelwert (= Erwartungswert) und sd die Standardabweichung ist, und die erhält man wenn man Math.sqrt(varianz) rechnet.

@SlaterB: Die Methode habe ich nicht gefunden. In welcher Klasse ist sie zu finden?


----------



## SlaterB (21. Nov 2009)

ich habe nur das erste Posting zitiert, da ist ein Link, anscheinend nicht Standard-API


----------



## NYK (22. Nov 2009)

Guybrush Threepwood hat gesagt.:


> Du kannst einfach die Zufallszahl nehmen und umrechnen.
> Das geht so: double x = m + (Random.nextGaussian()*sd), wobei m der Mittelwert (= Erwartungswert) und sd die Standardabweichung ist, und die erhält man wenn man Math.sqrt(varianz) rechnet.
> 
> @SlaterB: Die Methode habe ich nicht gefunden. In welcher Klasse ist sie zu finden?



So habe ich das bisher ja auch implementiert. Dachte, man kann es eleganter lösen, als ich die Klassen Normal und Randoms mit den zugehörigen Methoden gefunden habe. Danke trotzdem!


----------



## Guybrush Threepwood (22. Nov 2009)

Ich finde nicht, dass es auf diese Weise unelegant ist. Random gibt z-standardisierte, normalverteilte Zufallszahlen aus, die man dann beliebig umrechnen kann ...


----------

