Monte-Carlo-Methode in Python

8

Ich habe versucht, Python zu verwenden, um ein Skript zu erstellen, mit dem ich eine große Anzahl von Punkten generieren kann, die in der Monte-Carlo-Methode verwendet werden, um eine Schätzung für Pi zu berechnen. Das Skript, das ich bisher habe, ist das:

%Vor%

Bisher kann ich alle benötigten Punkte generieren, aber die Anzahl der Punkte, die beim Ausführen des Skripts für eine spätere Berechnung ausgegeben werden, möchte ich gerne erhalten. Ich suche nicht nach unglaublich genauen Ergebnissen, nur eine gute Schätzung. Irgendwelche Vorschläge würden sehr geschätzt werden.

    
Matt Johnson 19.11.2012, 20:22
quelle

3 Antworten

15

Wenn Sie irgendeine Art von numerischer Berechnung für hohe Belastungen durchführen, in Betracht ziehen, numpy zu lernen. Ihr Problem ist im Wesentlichen ein ein-lineares mit einem ansatzlosen Setup:

%Vor%

Geben:

%Vor%

Die letzte Zahl ist die Anzahl der gezählten Ereignisse, d. h. die Anzahl der Punkte, deren Radius kleiner als eins ist.

    
Hooked 19.11.2012 20:44
quelle
2

Nicht sicher, ob Sie das suchen, aber Sie können enumerate auf range ausführen und die Position in Ihrer Iteration abrufen:

%Vor%

In diesem Fall würde index + 1 den aktuellen Punkt darstellen, der gerade erstellt wird ( index selbst wäre die Gesamtzahl der Punkte, die am Anfang einer gegebenen Iteration erstellt wurden). Auch wenn Sie Python 2.x verwenden, ist xrange im Allgemeinen für diese Art von Iterationen besser, da es nicht die gesamte Liste in den Speicher lädt, sondern auf sie bei Bedarf zugreift.

    
RocketDonkey 19.11.2012 20:26
quelle
1

Fügen Sie einfach Treffer Variable vor der Schleife hinzu, initialisieren Sie sie auf 0 und innerhalb Ihrer if Anweisung erhöhen Sie Treffer um eins.
Schließlich können Sie den PI-Wert mit hits und n berechnen.

%Vor%     
pm007 19.11.2012 20:34
quelle

Tags und Links