Monte-Carlo-Methode in Python
Habe ich versucht, die Python verwenden um ein Skript zu erstellen, dass mir erlaubt die Generierung von großen Nummern der Punkte, die für den Einsatz in der Monte-Carlo-Methode zu berechnen, eine Schätzung Pi. Das Skript habe ich bisher diese:
import math
import random
random.seed()
n = 10000
for i in range(n):
x = random.random()
y = random.random()
z = (x,y)
if x**2+y**2 <= 1:
print z
else:
del z
So weit, ich bin in der Lage, zum generieren von alle die Punkte, die ich brauche, aber das, was ich möchte zu bekommen, ist die Anzahl der Punkte, die erzeugt wird, wenn der Skript-Ausführung für die Verwendung in einem späteren Berechnung. Ich bin nicht auf der Suche für unglaublich genaue Ergebnisse, gerade gut genug zu schätzen. Irgendwelche Vorschläge würde sehr geschätzt werden.
- Wollen Sie zählen, wie viele random-Paare sind innerhalb des Kreises? Wenn das der Fall ist, verwenden Sie einfach einen counter...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie dabei jede Art von heavy-duty-numerische Berechnung, wenn man bedenkt das lernen
numpy
. Dein problem ist im wesentlichen ein one-linear, mit einer numpy setup:Geben:
Die Letzte Zahl ist die Anzahl der Ereignisse gezählt, d.h. die Zählung der Punkte, deren radius kleiner als eins.
Nicht sicher, ob dies ist, was Sie suchen, aber Sie können ausführen
enumerate
aufrange
und bekommen die position in Ihrem iteration:In diesem Fall
index + 1
darstellen würde der aktuellen Punkt erstellt (index
selbst wäre die Gesamtzahl der Punkte erstellt, die zu Beginn einer beliebigen iteration). Auch, wenn Sie mit Python 2.x,xrange
ist in der Regel besser für diese Art von Iterationen, wie es lädt nicht die gesamte Liste in den Speicher, sondern greift auf einer as-needed basis.Fügen Sie einfach trifft variable vor der Schleife eine Initialisierung auf 0 und in deinem if-Anweisung Inkrement trifft von einem.
Schließlich können Sie berechnen, PI-Wert mit trifft und n.