Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung
-
@Schlangenmensch sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
@EinNutzer0 sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
Mir scheint, du hast Random noch nicht richtig verstanden.
Kann sein. Hab ewig kein Java mehr gemacht.
Lass dir bloß nichts von EinNutzer0 einreden. Hier im Thread gibt es genau eine Person, die keine Ahnung von Random hat.
-
@SeppJ sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
@Schlangenmensch sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
@EinNutzer0 sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
Mir scheint, du hast Random noch nicht richtig verstanden.
Kann sein. Hab ewig kein Java mehr gemacht.
Lass dir bloß nichts von EinNutzer0 einreden. Hier im Thread gibt es genau eine Person, die keine Ahnung von Random hat.
Entweder du benimmst dich, oder ich bin weg.
Schlangenmenschs Irrtum konnten wir ja schon aufklären, d. h., du kannst dir deine Beleidigungen sparen.
Hier gibt es ziemlich viele, die von Java keine Ahnung haben, und ggf. war es ein Fehler, nachzufragen.
-
@EinNutzer0 sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
Schlangenmenschs Irrtum konnten wir ja schon aufklären, d. h., du kannst dir deine Beleidigungen sparen.
Was genau mein Irrtum war, würde mich hier doch interessieren. Nur, weil es unterschiedlich initialisiert scheinbar zufällige Werte wiedergibt, heißt es nicht, dass es eine sinnvolle Wahrscheinlichkeitsverteilung ergibt.
Edit:
g += (0.5 - g) * a * a; g -= (g - 0.5) * a * a;
ist das nicht das gleiche?
g = g + ((0.5 -g) * a²) = g + (0.5a² - ga²) = g + 0.5a² - ga² g = g - ((g - 0.5) * a²) = g - (ga² - 0.5a²) = g - ga² + 0.5ga² = g + 0.5a² - ga²
-
@EinNutzer0
Ich verstehe deinen Einsatzweck nicht so recht.In einem Teil sprichst du von Entropie und Güte der Zufallswerte, nicht reprodzierbare Seeds als würdest du deine Funktion im kryptographischen Bereich einsetzen.
Auf der anderen Seite nutzt du eine veränderte Gauß oder Beta-Verteilung, als würdest du beispielsweise einen physikalischen Prozess simulieren. Und dies wiederspricht einer Verwendung im Kryptographie-Bereich.
- In welchem Bereich verwendest du deine Funktion?
- Nutzt du deine Funktion im kryptographischen Bereich?
- Rufst du absichtlich new Random() auf, damit du einen neuen Seed bekommst und so "zufällig" wirst?
- Wozu benötigst du die Gauß- bzw. Beta Verteilung?
-
@Schlangenmensch sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
Edit:
g += (0.5 - g) * a * a;
g -= (g - 0.5) * a * a;ist das nicht das gleiche?
g = g + ((0.5 -g) * a²) = g + (0.5a² - ga²) = g + 0.5a² - ga²
g = g - ((g - 0.5) * a²) = g - (ga² - 0.5a²) = g - ga² + 0.5ga² = g + 0.5a² - ga²Ja, es könnte durchaus sein, dass ich da etwas nachlässig war, und dass nur ein Term genügt hätte...
@Schlangenmensch sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
Was genau mein Irrtum war, würde mich hier doch interessieren.
Ich will jetzt nicht auf PRNGs eingehen... so schwer sind die nicht zu verstehen. Wichtig ist nur, dass aus mehreren Aufrufen von
new Random()
auch "unterschiedliche" Zahlen resultieren. Es gibt nur einen Fall, der problematisch ist, nämlich jedes Malnew Random(0)
odernew Random(1)
aufzurufen, um nur einen Wert zu bestimmen.@Quiche-Lorraine sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
Wozu benötigst du die Gauß- bzw. Beta Verteilung?
Ich wollte einfach nur Aktienkursverläufe simulieren...
@Quiche-Lorraine sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
Rufst du absichtlich new Random() auf, damit du einen neuen Seed bekommst und so "zufällig" wirst?
Eigentlich ist das nur dem raschen Schreiben geschuldet...
tl;dr: Die Beta-Funktion ist besser. Ich hab die nur noch nicht verstanden...
Danke für eure Antworten.
-
@EinNutzer0 sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
Ich will jetzt nicht auf PRNGs eingehen... so schwer sind die nicht zu verstehen. Wichtig ist nur, dass aus mehreren Aufrufen von new Random() auch "unterschiedliche" Zahlen resultieren. Es gibt nur einen Fall, der problematisch ist, nämlich jedes Mal new Random(0) oder new Random(1) aufzurufen, um nur einen Wert zu bestimmen.
Mir ging es die ganze Zeit nur um die Frage ob einzelne Ziehungen aus unterschiedlich initialisierten PRNGs eine passende Wahrscheinlichkeitsverteilung ergeben. Offenbar haben wir aneinander vorbei geschrieben.
-
@EinNutzer0 sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
Ich wollte einfach nur Aktienkursverläufe simulieren...
Dann dürfte die erste Frage wohl sein: Wie simuliere ich dies?
Schaut man sich nämlich einen Aktienkurs auf kleinen Zeiteinheiten an, so erscheint diese eher gleich verteilt. Je größer die Zeiteinheit wird, desto eher werden Trends erkennbar.
Schau dir ruhig mal die Kurse von Amazon und Deutsche Bank an.
Ich habe mal schnell im Netz gegoogelt und eine Möglichkeit zur Simulation mittels Geometric Brownian motion gefunden: How to use Monte Carlo simulation with GBM
Es gibt sogar ein Paper hierzu: Simulating stock prices using geometric Brownian motion
Daran würde ich mich jetzt zuerst orientieren.
-
@Schlangenmensch sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
@EinNutzer0 sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
Ich will jetzt nicht auf PRNGs eingehen... so schwer sind die nicht zu verstehen. Wichtig ist nur, dass aus mehreren Aufrufen von new Random() auch "unterschiedliche" Zahlen resultieren. Es gibt nur einen Fall, der problematisch ist, nämlich jedes Mal new Random(0) oder new Random(1) aufzurufen, um nur einen Wert zu bestimmen.
Mir ging es die ganze Zeit nur um die Frage ob einzelne Ziehungen aus unterschiedlich initialisierten PRNGs eine passende Wahrscheinlichkeitsverteilung ergeben. Offenbar haben wir aneinander vorbei geschrieben.
Wenn du wirklich verunsichert sein solltest: Nein, natürlich haben die jeweils ersten Ziehungen aus einem biased Seed selber einen Bias. Oder andersrum gedacht: Wenn die Methode zum Erzeugen des Seeds so toll wäre, um unbiased Zufall zu erzeugen, dann bräuchte man ja keinen Zufallsgenerator mehr…
Hier trifft es wohl nicht zu, da der Generator recht einfach ist, aber bei vielen Generatoren ist der interne State viel größer als der Seed, und man würde mit der ersten Zahl nach dem Seeding immer eine Zahl ziehen, die aus ganz vielen 0 erzeugt wurde. Die Anweisung dort ist, dass man stets erst ein paar Tausend Zahlen ziehen sollte, damit der Generator überhaupt warm gelaufen ist, bevor man richtig anfängt.
-
@SeppJ Danke, ich bin davon ausgegangen, dass das irgendwie Biased sein muss, habe mich aber mit der genauen Funktionsweise von PRNGs noch nicht intensiv genug auseinandergesetzt um mir wirklich sicher zu sein.
Ich hatte schon überlegt schnell 'n Test dafür zu implementieren und zu plotten um das Problem zu veranschaulichen, konnte mich aber nicht dazu durchringen.
-
@Schlangenmensch sagte in Zufälligen nextGaussian-Wert zwischen zwei Grenzen mit einer Häufung:
Ich hatte schon überlegt schnell 'n Test dafür zu implementieren und zu plotten um das Problem zu veranschaulichen, konnte mich aber nicht dazu durchringen.
Das ist auch etwas, was du nicht so leicht mit Amateurmitteln nachweisen kannst. Da muss man sich schon ordentlich auskennen, wonach man wie sucht. Ich könnte das spontan nicht, und ich habe mich mal eine Weile mit der Korrelation zwischen aufeinanderfolgenden Zahlen beschäftigt (da ist Java Random sowieso nicht so toll, weil die Standardimplementierung ein LCG ist). Aber ich weiß ohne Nachforschung nicht, ob die gleichen Methoden hier greifen würden. Das hat bisher auch bestimmt noch niemand untersucht, weil niemand ernsthaft auf die Idee käme, die Zahlen wie hier gezeigt zu erzeugen.