私はPIの近似値を計算するためにモンテカルロ実験を行っています。 SICPから:PI計算のためのこのSchemeプログラムで私のエラーを見つけることができません
モンテカルロ法は、大規模なセットからランダム でサンプル実験を選択し、それら 実験の結果を集計 から推定 確率に基づいて 控除を作る で構成されています。例えば、 は、 6/pi^2がランダムに選択された2つの整数には共通して の要素を持たない確率であるという事実を使って近似することができます。すなわち、 の最大公約数は1になります。 に近似を求めるには、 という数多くの実験を行います。各実験で 我々はランダムに2つの 整数を選択し、そのGCDは、テストに合格された回数の割合 1であるかどうかを確認するためにテスト を行うには、6/PI^2の 私たちの推定を与える、と このから我々は近似を piに得る。
しかし、私は私のプログラムを実行すると、私はここで3.9 ...
のような値を得ることが私のプログラムである:
(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)))
私の通訳はMIT/GNU 7.7.90で
感謝助けを求めて
DrSchemeで実行するコードを取得できません。定義:関数本体の式が1つだけ期待されていましたが、少なくとも1つの余分な部分が見つかりました:(define(execute-experiment n-times acc)(if(> n-times 0) (実行時実験(n回1)(+ acc 1)))acc)) したがって、条件付きのあなたがしていると思われることをやっています。 –
それは役に立ちませんが、あなたの質問で私はこれを考えました:http://www.wikihow.com/Calculate-Pi-by-Throwing-Frozen-Hot-Dogs。私が助けなかったら、少なくとも私は笑いを提供することができます。 – duffymo
最後の2つの 'define'は前の定義を評価する必要があるため有効ではありません。 –