schon wieder ich.
Diesmal habe ich mit einen Mitstudenten zu der Aufgabe:
Einem Kreis mit Radius 1 sei ein Quadrat dicht umschrieben: ‚Dart-Scheibe‘.
• Simulieren Sie zufällige Würfe auf die Dart-Scheibe.
• Zählen Sie die Treffer (im Kreis).
• Berechnen Sie 4 · (Treffer/Würfe).
• Vergleichen Sie mit π
folgendes Programm geschrieben:
Code: Alles auswählen
def montecarlo(N): # Funktion wird definiert
"""Auf einen Kreis in einem 1*1 großen Quadrat werden N Wuerfe simuliert.
Sie liefert die durchschnittlichen Treffer * 4 zurueck. """
from random import random # implementiert Zufallszahlen
wuerfe, treffer = 0, 0 # bei 0 Wuerfe und Treffer wird begonnen
while wuerfe<N: # Anweisungsblock wird solange wiederholt, bis die Bedingung
# eingetroffen ist (bis
# x und y sind die Koordinaten des geworfenen Pfeils
# random liefert die Werte zwischen 0 und 1, zufällig
x, y = random(), random()
if (x**2+y**2)**0.5 < 1: # euklidische Abstand vom Nullpnkt wird
# definiert, wenn die berechneten Abstand
# kleiner 1 sind, dann wurde der Kreis getroffen
treffer+=1
wuerfe+=1
return 4.*treffer/wuerfe # 4 mal werden de Treffer und Wuerfe berechnet
if __name__=='__main__':
from math import pi # implementiert von math pi
# Der versuch wird mit immer groesseren Anzahlen von Würfen wiederholt
#und dann wird der Betrag des jeweiligen Abstandes zum bekannten pi berechnet
for N in [1,10,100,1000,10000,100000,1000000]: # Anzahl von Wuerfen wird angegeben
abweichung = abs(montecarlo(N)-pi) # liefert den absoluten Wert von x
# (Abstand zwischen zwischen x und Null)
print "Nach %d Wuerfen betrug die Abweichung zu pi: %f" %(N,abweichung)
Ich wollte nun fragen, ob meine Kommentare richtig sind und ob es noch verbesserungsvorschläge gibt.
So langsam bekomme ich gefallen an Python.