Wahrscheinlichkeitsverteilung

Status
Nicht offen für weitere Antworten.

kognitio

Aktives Mitglied
Hallo zusammen,
ich muss für meine Doktorarbeit (Psychologie) einiges in Java programmieren und bin jetzt an einem Problem, dass ich nicht so leicht lösen kann.
Ich müsste für eine belibige Anzahl von "Knoten" (sagen wir mal 1000) verschiedene Werte verknüpfen. Jeder Knoten bekommt einen Wert. Jedoch sollten diese Werte nicht zufällig sein, sondern eine Wahrscheinlichkeitsverteilung haben, so dass die meisten Werte (etwa 80%) zwischen 0 - 0.2 liegen und die restlichen 20% zwischen 0.2 - 1.
Habe eine Formel gefunden, die das beschreiben dürfte:
f(x) = alpha * x^(- beta) (^ = hoch)
Leider habe ich keine Ahnung, wie ich in Java eine Formel programmiere.
Vielleicht (und das ist meine heimliche Hoffnung) kennt jemand von euch eine Klasse, die so was in der Art macht und die ich einbinden kann.
Dankeschön für Eure Hilfe,
Stephan
 

Leroy42

Top Contributor
Ich weiß zwar nicht was deine Formel bedeutet, aber die Aufgabenstellung ist einfacher zu lösen:

Code:
import java.util.*;
...
Random rand = new Random();
for (int i=0; i < KNOTENANZ; ++i) {
  if (rand.next() < 0.8)
    double val = rand.next() * 0.2;
  else
    double val = rand.next() * 0.8 + 0.2;
}
 

Wildcard

Top Contributor
mit Random#nextGaussian() bekommst du Werte nach Gausscher Normalverteilung. Die kannst du anschließend Transformieren.
 

kognitio

Aktives Mitglied
vielen Dank euch beiden.
@Leroy42 ich danke, dass dürfte auch genügen, schau mer mal, aber sieht gut aus. ich werds mal plotten …
@Wildcard... den Gedanken hatte ich auch schon, aber bei einer gauskurve (auch wenn ich nur die positiven werte nehmen würde) ist der kurvenverlauf annders, als bei einer Wahrscheinlichkeitsverteilung. geht daher leider nicht.
 

Wildcard

Top Contributor
Leroys Methode sorgt doch nur dafür das entsprechend viele Werte in einen bestimmten Bereich fallen, (das kann man übrigens auch einfacher haben :bae: ) aber deren Verteilung ist immer noch stetig, und das willst du bestimmt nicht haben....
Alle Normalverteilungen lassen sich auf die Standardnormalverteilung zurückführen und somit kannst du auch die Gaussverteilung auf deine Verteilung transformieren sofern diese eine Normalverteilung ist.
Was für eine Verteilungsfunktion hast du denn?
 

kognitio

Aktives Mitglied
@Wildcard
hmm… ich fürchte, dass du recht hast. Aber wie kann ich die Gaussverteilung transformieren? Klingt im ersten Moment recht kompliziert. Auf die Frage der Verteilungsfunktion… reicht das die obige Formel nicht aus? Bin leider zuwenig in dieser Materie drin. Das ganze ist eigentlich nur ein "kleiner" Task, den ich dazu machen muss…
Falls noch jemand etwas weiß, oder auch nur eine gute Quelle im Internet kennt, die mir helfen könnte, wäre ich sehr dankbar.
vg,
Stephan
 
Status
Nicht offen für weitere Antworten.

Oben