PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2 Fragen zur Anwendung von Zufallsgeneratoren


mittelding
2015-02-09, 16:00:57
Hallo erstmal.

Mein Anliegen ist eher theoretischer Natur, frage mich jedoch gerade folgende Dinge bezüglich Zufallsgeneratoren.

1.)

Ich hatte vor einiger Zeit mal eine diskrete Simulation gebaut, die den Fluss von Materialen zwischen Produktionsmaschinen repräsentiert. Dabei können die Maschinen bei jedem Verarbeitungsprozess mit einer gewissen Wahrscheinlichkeit ausfallen. Der Prof hatte damals ein ähnliches Beispiel vorgestellt, bei welchem er für alles, was in seiner Simulation mit Zufall zu tun hatte, ein- und dieselbe Instanz des PRNG in Java benutzt hatte.

Im Nachinein denke ich, dass sein Ansatz aber nicht ganz korrekt ist. Müsste man nicht für jeden Sachverhalt der Simulation, der zufallsbedingt ist, eine eigene Instanz eines PRNG benutzen? Schließlich liefert ein PRNG für eine größere Anzahl an Aufrufen ja eine Gleichverteilung der Rückgabewerte. Wenn sich jetzt jedoch mehrere Aufrufer an der selben Instanz eines Generators bedienen, sollte es ja eigentlich so sein, dass jeder Aufrufer für sich betrachtet nicht unbedingt eine Gleichverteilung der Werte erhält. Aufrufer A könnte in einem ungünstigen Fall beispielsweise oft Werte < 0.5 erhalten und Aufrufer B oft Werte > 0.5. Der PRNG hätte seine Arbeit korrekt getan, denn gesamtheitlich sind die erzeugten Zahlen gleichverteilt, nur eben aus Sicht der beiden Aufrufer nicht.

Ich hoffe, dass das einigermaßen verständlich war. Stimmt das so? In der Literatur, welche mir vorlag, wird das Thema meist gar nicht angesprochen und bei Simulationen bei ein einziger PRNG benutzt...

2.)

Es gibt ja diverse Ansätze, echten Zufall zu erzeugen, zum Beispiel mittels dem Rauschen aus der Atmosphäre, dem Flimmern einer Webcam und so weiter und so fort.

Da frage ich mich: wie bringt man dort eine Gleichverteilung ein? Sind die in der natürlichen Quelle beobachteten Werte bereits gleichverteilt/muss man die Quelle entsprechend wählen oder ist es notwendig, da später noch eine Art Transformation drumherum zu bauen, dass das ganze dann einigermaßen gleichverteilt ist?


Danke

Thunderhit
2015-02-09, 18:23:20
1.) Das Problem als solches existiert mMn nicht. Nach dem Gesetz der großen Zahlen werden, wenn der PRNG seine Arbeit richtig macht, mit einer genügend großen Stichprobe alle Aufrufer gleichverteilte Werte erhalten haben.
Dein Beispiel mit <> 0.5 könntest du auch auf einen einzelnen Aufrufer anführen. Bei einer kleinen Stichprobe kann ist dieser Fall problemlos auftreten. Aber Wahrscheinlichkeiten sind für einen Einzelfall (oder auch kleine Stichproben) nicht/kaum von Bedeutung.

Zu 2. könnte ich leider nur raten, hatte im Studium keine RNGs.

ux-3
2015-02-09, 18:31:21
Einfach mal in Phasenraum den Generator plotten. Und dann auch mal statt n+1 mit n+2 oder n+3. Z.T. gibt es da ganz interessante Ergebnisse.

Im Nachinein denke ich, dass sein Ansatz aber nicht ganz korrekt ist. Müsste man nicht für jeden Sachverhalt der Simulation, der zufallsbedingt ist, eine eigene Instanz eines PRNG benutzen? Schließlich liefert ein PRNG für eine größere Anzahl an Aufrufen ja eine Gleichverteilung der Rückgabewerte. Wenn sich jetzt jedoch mehrere Aufrufer an der selben Instanz eines Generators bedienen, sollte es ja eigentlich so sein, dass jeder Aufrufer für sich betrachtet nicht unbedingt eine Gleichverteilung der Werte erhält. Aufrufer A könnte in einem ungünstigen Fall beispielsweise oft Werte < 0.5 erhalten und Aufrufer B oft Werte > 0.5. Der PRNG hätte seine Arbeit korrekt getan, denn gesamtheitlich sind die erzeugten Zahlen gleichverteilt, nur eben aus Sicht der beiden Aufrufer nicht.

Wenn der Generator unabhängigige Ergebnisse produziert, dann ist es Zufall, also OK.

Trap
2015-02-09, 19:54:30
Der PRNG hätte seine Arbeit korrekt getan, denn gesamtheitlich sind die erzeugten Zahlen gleichverteilt, nur eben aus Sicht der beiden Aufrufer nicht.
Das ist durchaus ein Qualitätskriterium für PRNGs. Bei guten PRNGs sind auch Teilmengen der erzeugten Zufallsfolge gute Zufallszahlen. Bei schlechten PRNGs öfters auch mal nicht.

Der von Java (ein LCG) ist da nicht so gut:
http://en.wikipedia.org/wiki/Linear_congruential_generator#Advantages_and_disadvantages_of_LCGs

mittelding
2015-02-10, 16:00:49
Danke für die Rückmeldungen, da habt ihr wohl recht. Nach anfänglicher Skepsis ließ sich das ganze nochmal an ein paar kleinen Java-Programmen nachvollziehen.