パスワードを忘れた? アカウント作成
398283 journal

yakusouX5の日記: Buffonの針 4

日記 by yakusouX5
計算機化学とやらの宿題でBuffonの針でπを求めろと来たのだが、どうにもそれらしい答えにならない
πが4付近に収束するのです。なぜなのかさっぱり
あと、πの値を求めたいのにπを使って証明しているのですがそれっていいのか?なんとなく気持が悪い
この問題ってπの値を求めるのでは無いような気がしてきた

#include<iostream>
#include<stdlib.h>
#include<time.h>
#include<math.h>

using namespace std;

int main(){

int i, j=0, count=0;
double  tyuuten,harisaki;

srand((unsigned int)time(0));

for (i=1; i<=7; i++){

    for (j=j; j < (int)pow(10.0,(double)i); j++) {
        // 0<= 中点 <=1
        tyuuten = (double)rand() / RAND_MAX;

        //中点-0.5 <= 針先の回転 <= 中点+0.5
        harisaki = (double)rand() / RAND_MAX - 0.5 + tyuuten ;

        //平行線 0と1にかかったか
        if ( ( tyuuten < 0.5 && (harisaki < 0.0 || harisaki > 2.0*tyuuten) )
         ||  ( tyuuten > 0.5 && (harisaki > 1.0 || harisaki < 2.0*tyuuten-1.0) ) ) {

            count++;
        }
    }

    cout << j << "回目  " << 2.0*j /count << endl;
}

return 0;
}

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by nekopon (1483) on 2005年12月20日 19時51分 (#852446) 日記

    まずは以下のように直してみてください

    harisaki=sin((double)rand()/RAND_MAX*M_PI/2)*0.5+tyuuten;

    針先の角度(Θ)が一様分布するのであって、針先と中点のある軸方向に対する距離(0.5sin Θ)が一様分布するわけじゃあないわけですんで。

    • 一応、中点を決めてそこで回転した針のX座標をX軸に下ろしたつもりなんですが
      更に、ここには書いていませんが課題の条件で角度やπを使うことは禁止となっているので、そこで困ってしまいました
      --
      うすっぺらいコメントがあらわれた! ▼
      親コメント
      • 気がつくのが遅くてごめんなさい。m(__)m それとなかなか厳しい条件ですね。(Buffon の針なら、角度が一様分布するのが本質的な条件になるので) 難しそうなので、しばらく考えさせてください。

        別の方法で乱数からpiを近似する方法ならご紹介できます:

        double monte_carlo(int repeats)
        {
          int count, i;
          double x, y;

          for (i = 0, count = 0; i < repeats; i++) {
            x = rand() / RAND_MAX;
            y = rand() / RAND_MAX;
            if (x * x + y * y < 1.0)
               count++;
          }
          return 4.0 * count / repeats;
        }
        親コメント
        • いえいえそんなに悩まないでください。先生も分かっていないでその条件にしている可能性も否定できませんので。ちょっとボケが入っていそうです
          夏休み明けを一週間間違えて初回の講義が休講になったり。しかも旅行に行っていたとか

          別の方法の乱数からπを求める方法は前回の課題で既に…
          --
          うすっぺらいコメントがあらわれた! ▼
          親コメント
typodupeerror

クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人

読み込み中...