Zufallsvariablen erzeugen < Maple < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:15 Do 06.12.2007 | Autor: | AnnaB |
Hallo zusammen!
Beim Erstellen von verschiedenen Simulationen für Statisik mit Hilfe von Maple bin ich auf folgendes Problem gestoßen:
Beim Generieren von Zufallsvariablen mit RantomTools in einer for-Schleife werden diese zwar erstellt, jedoch danach gespeichert, so dass bei weiteren Durchläufen der Simulation (auch nach Schließen und Öffnen von Maple) genau diese Zufallsvariablen wieder erscheinen. Und zwar geschieht das genau dann, wenn der Befehl "restart;" am Anfang der Datei steht. Ich dachte, es dient dazu, den Cache zu löschen und in dem Fall scheint es genau umgekeht zu sein. Wenn man "restart;" also entfernt, werden immer neue Zufallsvariablen generiert.
Mein Quellcode in gekürzter Fassung:
> summe:=0;
> for i from 1 by 1 while (summe>-2.5 and summe<2.5) do
> k(i):=stats[random, normald [-0.5,1]](1);
> summe:= summe + k(i); end do;
Wenn jemand einen Tipp für mich hat oder das Problem kurz erklären kann, wäre ich sehr dankbar!
Schöne Nikolaus-Grüße!
P.S.: Ich habe diese Problem mit Version 11 festgestellt und mit 9.5 getestet (bei beiden Version das gleiche Problem)
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo,
> Beim Generieren von Zufallsvariablen mit RantomTools in einer for-Schleife werden diese zwar erstellt, jedoch danach gespeichert, so dass bei weiteren Durchläufen der Simulation (auch nach Schließen und Öffnen von Maple) genau diese Zufallsvariablen wieder erscheinen. Und zwar geschieht das genau dann, wenn der Befehl "restart;" am Anfang der Datei steht. Ich dachte, es dient dazu, den Cache zu löschen und in dem Fall scheint es genau umgekeht zu sein. Wenn man "restart;" also entfernt, werden immer neue Zufallsvariablen generiert.
Die Werte werden nicht gespeichert. Wo denn auch? Es ist einfach so, dass du durch den restart-Befehl oder Neustarten des Programms den Seed für die Zufallszahlen zurücksetzt. Darauf basiert ja die (Pseudo-!!!)Zufallszahlenberechnung. Die ist streng deterministisch und ergibt bei demselben Seed auch immer exakt dieselbe Zufallszahlenfolge.
Deswegen musst du den Seed immer wieder neu setzen. Das geht mit dem Befehl randomize(). Ohne Parameter aufgerufen benutzt er die Systemzeit zur Berechnung eines Seeds. Die ist zwar auch nicht komplett zufällig, aber besser als gar nichts. Mit randomize(n) bekommst du für dasselbe n immer dieselben Zufallszahlen.
Auch dir einen schönen, fetten, roten Nikolaus!
Gruß
Martin
|
|
|
|