Random Zahl unter Berücksichtung eines Durchschnitts

Diskutiere Random Zahl unter Berücksichtung eines Durchschnitts im Java Basics - Anfänger-Themen Bereich.
W

Wippi11223

Hallo,

Ich möchte eine Zufallszahl generieren - all Zufallszahlen sollen aber im Durchschnitt einen Wert erreichen

Hier ein Beispiel:
  • Ich habe einen vorgegeben Durchschnittswert z.B. 50
  • Ich möchte mehrere Zufallszahlen berechnen die aber in Summe einen Durchschnitt von 50 ergeben sollen.
  • der Wertebereich Min =0
  • der Wertebereich Max= ist nicht definiert
Kann mir hier jemand helfen ? Mit Math.random() funktioniert das ja nicht denn ich weiß ja nicht den Max Wertebereich...


Vielen Dank
 
J

JustNobody

Also wenn der min Wert 0 ist und der Durchschnitt gegeben wurde und unter der Annahme, dass die Werte Gleichmäßig verteilt sind:
Kannst Du dann den max Wert bestimmen?

Dann kannst Du einfach eine Zufallszahl in dem bestimmten Bereich erzeugen und bist fertig.
 
MoxxiManagarm

MoxxiManagarm

  • Ich habe einen vorgegeben Durchschnittswert z.B. 50
  • Ich möchte mehrere Zufallszahlen berechnen die aber in Summe einen Durchschnitt von 50 ergeben sollen.
Dann würde ich zuerst ein Array erstellen, welches an jeder Position diese Zahl hält. Dann kannst du wiederholt an einer zufälligen Stelle eine neue Zahl setzen. Wenn du statt der 50 jetzt eine 25 setzt, also 25 wegnimmst, dann musst du die 25 an anderer Stelle (kann auch verteilt sein) wieder ergänzen.

Edit:
Oder du füllst von vornherein jeden Index mit einer Zufallszahl und du speicherst die immer einen diff zu dem Durchschnitt. Wenn du also an Stelle 25 rollst, dann ist dein Diff -25. Wenn du an 2. Stelle nun 80 rollst, dann wird dein Diff zu +5 usw. Wenn du dann alle Felder befüllt hast musst du diesen Diff noch zufällig verteilen.
 
J

JustNobody

Also die Anforderung möchte ich jetzt doch einmal hinterfragen:

Du willst einen Zufallsgenerator, der im rechnerischen Schnitt den Durchschnitt hat? Das wäre dann z.B. der normale, ideale Würfel:
Du bekommst Zufallszahlen von 1- 6. Wenn der Würfel ideal ist und du oft genug würfelst, dann wird ein Durchschnitt von 3,5 dabei raus kommen, weil jede Zahl von 1-6 gleich oft gewürfelt wurde ...

Oder willst Du einen Zufallsgenerator haben, der dir n Zufallszahlen geben soll und der Durchschnitt ist dann exakt der vorgegebene Wert?
Dann entfernen wir uns aber von idealen Würfeln und so. Durchschnitt 3,5 bei 2 Zufallszahlen hat dann nur die Kombinationen:
1 6
2 5
3 4
4 3
5 2
6 1
==> Nach der ersten Zahl kann ich die zweite Vorher sagen. Bei n statt 2 würfen kann ich dann auch Wahrscheinlichkeiten bestimmen und die Chance, nach x Zahlen die x+1 Zahl vorher zu sagen wird immer größer.

Wenn der Bereich nicht vorgegeben ist, dann sind auch Extremfälle denkbar. Also Durchschnitt 50 bei 100 Zufallszahlen könnten 99x 0 und 1x 5000 sein ...
Die Wahrscheinlichkeit dafür ist zwar sehr gering, aber du hast dann einen Zahlenstrahl bei dem die Wahrscheinlichkeit der Zahlen von 0 - 5000 zu berücksichtigen wären ... und die Wahrscheinlichkeiten wären natürlich nicht gleich!

Ersteres habe ich betrachtet - da kann man den Bereich, den man braucht bei einer Gleichverteilung der Zahlen, berechnen.

Zweites etwas komplexere hat @MoxxiManagarm etwas beschrieben.
 
W

Wippi11223

Hallo,
ok vielen Dank für eure Antworten - also ich habe folgende Parameter:
min = Startpunkt = 0
max = MaxValue = ist doch vorhanden z.B. 100 (Sorry habe das im vorherigen Post falsch geschrieben)
Avg = 65
Anzahl der Ziehungen = 150

Ich möchte eine Zufallszahl generieren die diesen Parametern entspricht - aber ich denke dann habe ich alle Werte oder?
Math.random()*MaxValue --> wäre hier die Lösung oder?

Aber wie erreiche ich dann den AVG von 65? Denn wenn ich 0-100 der Bereich wäre und die Zufallszahl Gleichverteilt ist dann erreiche ich einen AVG von 50 oder?



Thx!
 
W

Wippi11223

Hallo,
ok vielen Dank für eure Antworten - also ich habe folgende Parameter:
min = Startpunkt = 0
max = MaxValue = ist doch vorhanden z.B. 100 (Sorry habe das im vorherigen Post falsch geschrieben)
Avg = 65
Anzahl der Ziehungen = 150

Ich möchte eine Zufallszahl generieren die diesen Parametern entspricht - aber ich denke dann habe ich alle Werte oder?
Math.random()*MaxValue --> wäre hier die Lösung oder?

Aber wie erreiche ich dann den AVG von 65? Denn wenn ich 0-100 der Bereich wäre und die Zufallszahl gleichverteilt ist dann erreiche ich einen AVG von 50 oder?
Thx!

--> mir wäre eher wichtig dass ich den AVG erreiche und den Max Wert unberücksichtigt lasse.
 
J

JustNobody

Schau Dir die Antwort von Moxxi noch einmal an. Dann hast Du einen Ansatz für einen Algorithmus.
 
MoxxiManagarm

MoxxiManagarm

Das habe ich doch gesagt. Du weißt wie man Zufallszahlen generiert, oder?! Pseudo mit deinen Beispielwerten:

Code:
erstelle Array der Länge 150
erstelle diff Speicher initial Wert 0
wiederhole 150 mal <- index
  Generiere Zufallszahl zwischen 0 und 100
  Array an Stelle index <- Zufallszahl
  addiere (Zufallszahl - 65) zu diff

wiederhole bis diff 0
  wähle zufälligen index von Array
  gleiche Array an Stelle index an, beachte dabei dir lower/upper boundaries
  inc/dec diff je nachdem
 
Thema: 

Random Zahl unter Berücksichtung eines Durchschnitts

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben