online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon zufall vom 30.10.2019, 09:43 Options

Normalverteilte zufallszahlen mit Mittelwert und Streuung

Hallo Leute,

ich hab ein Problem und finde nix richtiges im Netz. :(
Ich möchte mittels Java oder C# normalverteilte Zufallszahlen mit vorgegebenem Erwartungswert und Streuung generieren. Ich hatte es erst im C# versucht aber da sah es noch schlechter aus. Java bietet ja die next.gaussian() die zufallszahlen zw. mit Erwartungswert 0 und streuung 1 generiert. Aber leider weiß ich nicht wie ich das anpassen kann, dass es mir zufallszahlen mit meinem Erwartungswert liefert. Irgendeine Streckung oder sowas....

Ideen? Ich bin dankbar für alles! :)

Lg
jojo


Antwort schreiben

Antwort 1 von Jaja vom 30.10.2019, 10:18 Options

du müsstest dir wohl selbst eine entspr. funktion schreiben - mir ist zumindest keine andere lösung bekannt.
aber ich hab auch nicht die tolle ahnung ;)

Allgemein ist die dichte der normalverteilung:

f(x)={e^[-0.5((x-erwartungswert)/standardabweichung)²]}/{standardabweichung *sqrt[2*PI]}

Antwort 2 von Jaja vom 30.10.2019, 10:21 Options

ach so:

in die dichtefunktion f(x) kannst du dann für x eine gleichverteilte zufallszahl einsetzen. so einen zufallszahlengenerator gibts ja in jeder prog.sprache...

Antwort 3 von kloma vom 30.10.2019, 10:40 Options

Zitat:
Ich möchte mittels Java oder C# normalverteilte Zufallszahlen mit vorgegebenem Erwartungswert und Streuung generieren.

wenn es auch perl sein dürfte, da gäb es das schon fertig (cpan-module).

Antwort 4 von zufall vom 30.10.2019, 10:58 Options

Thx Jaja, dass versuch ich auch die ganze Zeit aber das bekomme ich irgendwie nicht gebacken! :( Ich dachte da genau an sowas wie von kloma, nur halt ich c# oder Java. Mich jetzt noch mit perl zu befassen hab ich keine Lust! :P

Noch andere Ideen?

Antwort 5 von zufall vom 30.10.2019, 11:11 Options

habs mal versucht..


		double StndAbw;
		double mean;
		double X;
		double d1;
		double d2;
		double d3;
		double d4;
		double d5;
		double z;
		
		StndAbw =3;
		mean = 50;
		
		Random zZ = new Random();
		
		
		System.out.println("Start...");
		
		for(int i=0;i<100;i++)
		{		
				z=zZ.nextDouble();
			
				d1=(z-mean)/StndAbw;
				d2=Math.pow(d1,2);
				d3=(-0.5*d2);
				d4=Math.exp(d3);
				d5=(StndAbw*Math.sqrt(2*Math.PI));
				
				X=d4/d5;
		

				//X = (zZ.nextGaussian()*9)+1;
				System.out.println(X);
		}


liefert leider nur müll ...

Start...
9.291629843605963E-61
3.069131144639081E-61
4.306559230904052E-61
1.1730194527309215E-60
1.3387533021098374E-60
3.042784476895542E-61
8.687777941961444E-62
1.5212242315196183E-59
3.277905612121527E-61
5.0231841912835665E-61
4.8191935518151115E-60
1.766087896559868E-60
7.452137708084323E-60
1.4837860841935484E-61

Antwort 6 von Jaja vom 30.10.2019, 11:17 Options

...dein erwartungswert muss zwischen 0 und 1 liegen, da die zufallszahlen doch auch nur zwischen 0 und 1 generiert werden, oder bei java / c# nicht?

du musst anschließend f(x) mit einem faktor multiplizieren.
z.b. für Zz zwischen 0 und 5 = f(x) *5,
oder Zz 0 ... 155 = f(x)*155

Antwort 7 von Jaja vom 30.10.2019, 11:21 Options

... du kannst NICHT gleich die zZ "z" des random generators multiplizieren, da die dichtefunktion auch nur für den wertebereich 0..1 definiert ist - du kannst nur das ergebniss durch multiplikation im wertebereich erweitern...

Antwort 8 von Jaja vom 30.10.2019, 11:28 Options

ach ja:

deine standartabweichung setze bitte auch auf einen wert zwischen 0 und 1 ;)

Ähnliche Themen

Zufallszahlen
Scotty25  04.01.2007 - 91 Hits - 4 Antworten

Mittelwert bilden mit Bedingungen
struux  28.02.2007 - 107 Hits - 2 Antworten

normalverteilte zufallszahlen
rudigan  26.04.2007 - 126 Hits - 1 Antwort

Excel - VBA: Variable Zellbezüge
henne87  16.04.2008 - 56 Hits - 5 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026