zu berechnen Ich mache ein Monte-Carlo-Experiment, um eine Approximation von PI zu berechnen. Von SICP:Ich kann meinen Fehler in diesem Scheme-Programm nicht finden, um PI
Das Verfahren Monte Carlo besteht aus Probe Experimente zufällig aus einem großen Satz auswählen und dann Abzüge auf der Grundlage der Wahrscheinlichkeiten geschätzt von machen die Ergebnisse dieser Experimente Tabelliermaschinen. Zum Beispiel können wir approximieren mit der Tatsache, dass 6/pi^2 ist die Wahrscheinlichkeit, dass zwei Integer zufällig ausgewählt werden keine gemeinsame Faktoren haben; das heißt, dass ihr größter gemeinsamer Teiler 1 sein wird. Um die Approximation zu erhalten, führen wir eine große Anzahl von Experimenten durch. In jedem Versuch wählen wir zwei ganze Zahlen zufällig und führen Sie einen Test zu sehen, ob ihre GCD 1. Der Anteil Mal ist, dass der Test gibt uns übergeben wird unsere Schätzung von 6/pi^2, und von dieser wir erhalten unsere Annäherung an pi.
Aber wenn ich mein Programm laufe ich Werte wie 3.9 erhalten ...
Hier ist mein Programm:
(define (calculate-pi trials)
(define (this-time-have-common-factors?)
(define (get-rand)
(+ (random 9999999999999999999999999999999) 1))
(= (gcd (get-rand) (get-rand)) 1))
(define (execute-experiment n-times acc)
(if (> n-times 0)
(if (this-time-have-common-factors?)
(execute-experiment (- n-times 1) acc)
(execute-experiment (- n-times 1) (+ acc 1)))
acc))
(define n-success (execute-experiment trials 0))
(define prob (/ n-success trials))
(sqrt (/ 6 prob)))
Mein Dolmetscher ist MIT/GNU 7.7.90
Dank für jede Hilfe.
Ich kann Ihren Code nicht in DrScheme ausführen. Hier ist der Fehlercode: define: erwartet nur einen Ausdruck für den Funktionskörper, aber gefunden mindestens einen zusätzlichen Teil in: (define (Ausführen-Experiment n-mal acc) (if (> n-mal 0) (wenn time-have-common-factors?) (Ausführen-Experiment (- n-mal 1) acc) (Ausführen-Experiment (- n-mal 1) (+ acc 1))) acc)) Also stellen Sie sicher, dass bedingte tut, was du denkst, dass es tun soll. –
Es ist nicht hilfreich, aber deine Frage ließ mich daran denken: http://www.wikihow.com/Calculate-Pi-by-Throwing-Frozen-Hot-Dogs. Wenn ich nicht helfen kann, kann ich wenigstens lachen. – duffymo
Die letzten beiden Definitionen sind nicht gültig, da sie vorherige Definitionen auswerten müssen. –