C++でモンテカルロ法を書いて、円周率を計算した
Sponsored Links
皆さんこんにちは
お元気ですか。私は元気です。
さて、今日はモンテカルロ法を書いて、円周率を計算してみました。
基本的な戦略は簡単で、円の中にあるかどうかを判定します。判定式ですが(x**2 + y**2 <= 1.0)の時に
円より中にあると計算します。
四角の中に対してランダムに点を打ち、オレンジ色の箇所の数を数えます。最終的に4倍を行い、円周率とします。
Source Code
#include <iostream> #define N 10000 using namespace std; int main(void){ double cnt = 0.0; for(int i = 0; i < N; i++){ double x = (double)rand()/RAND_MAX; double y = (double)rand()/RAND_MAX; if((x*x + y*y) <= 1.0){ cnt += 1.0; } } cout << "円周率:" << cnt / N * 4.0 << endl; }
Output
円周率3.1496