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

YuAokiの日記: モンテカルロ法による円周率の計算(C++版)。

日記 by YuAoki
Cマガのプログラミング研究会のお題(第2回)を解いてみる。
参考文献なし。

#include <iostream>
#include <stdlib.h>
using namespace std;

//モンテカルロ法で、円周率を算出します。
//numberoftimesは乱数ポイントの試行回数で
//数値が多いほど、時間はかかりますが、正確な
//円周率が算出できます。
double calculatePai(int numberoftimes){
    double x = 0;
    double y = 0;
    int count = 0;

    for (int i=0;i<numberoftimes;i++){
        //乱数を生成して、乱数ポイント(x,y)を作る
        x = (double) rand()/RAND_MAX;
        y = (double) rand()/RAND_MAX;

        if (((x*x) + (y*y)) < 1){
        //乱数ポイント(x,y)が、円の域内に入っている場合は
        //カウンタフラグを増やす
        count++;
        }
    }
    //半径(1)の二乗×円周率=半径(1)の二乗×占有率×4
    //だから、円周率=占有率×4
    return (double) count * 4 / numberoftimes ;
}

int main(int argc, char *argv[])
{

//試行数70万回で表示
cout << calculatePai(7000000) << endl;

  //停止
  system("PAUSE");
  return 0;
}

結果は、
===================
3.14127
続行するには何かキーを押してください . . .
===================
まぁ、OK。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家

読み込み中...