モンテカルロ法

一辺が2の正方形の面積を「m」とする。
内接する円は、直径が2なので、r=1、πr^2=πとなる。
これをnとする。
正方形が2x2=4なので、m=4,n=π。
m:n=4:πなので、4*π/4=π、
x2+y2<=1で円の内側か外側かで円周率が近似できる。

■結果の平均を取ってしまうと、期待している精度を、「結果」ではなく、「式の中」に
入れてしまうことになるので、乱数の回数を10倍づつ増やす。

▼Cの場合、以下のソースを「test.c」にコピペ。
「gcc -O3 test.c」で出来た「a.out」を実行。

「みその計算物理学」さん、ありがとう。

http://www.geocities.jp/supermisosan/montecarlo.html

初期値は、1千万。比較のため、7千万、7億、70億にすると、

(1千万) : 3.141130
7千万 : 3.141485
7億 : 3.141585
70億 : 3.141591(15分位かかった)


▼C++版の場合、以下のソースを「test.cc」にコピペ。

「system("PAUSE");」はエラーが出るので削除。
「g++ -O3 test.cc -o b.out」で出来た「b.out」を実行

「YuAoki」さん、ありがとう。

http://slashdot.jp/~YuAoki/journal/196582

初期値は70万。

70万 : 3.14116
700万 : 3.14149
7000万 : 3.14159
7億 : int のままでは「overflow」で実行出来ませんでした。

▼Wikipedia 円周率から引用

π = 3.14159 26535 89793 23846 26433 83279 50288 …

http://ja.wikipedia.org/wiki/%E5%86%86%E5%91%A8%E7%8E%87

●使う言語や、アルゴリズム、宣言の型によりますが、
「精度」の意味では、3位までは有効だと考えて良いのではないでしょうか。


■「C、C++」以外にも様々な言語で簡単に実装できます。
今回は精度を確認することが目的ですので、自分ではプログラムを書きませんでした。
「C、C++」が使えない場合は、以下も参考に。

▼EXCEL 用

「中野正勝」さん。

http://aero.kouku-k.ac.jp/nakano/IT3/pi_MC.htm

▼web用

「宍戸 輝光」さん。

http://www.sm.rim.or.jp/~shishido/pie.html

一辺が2の正方形の面積を「m」とする。
内接する円は、直径が2なので、r=1、πr^2=πとなる。
これをnとする。
正方形が2x2=4なので、m=4,n=π。
m:n=4:πなので、4*π/4=π、
x2+y2<=1で円の内側か外側かで円周率が近似できる。

■結果の平均を取ってしまうと、期待している精度を、「結果」ではなく、「式の中」に
入れてしまうことになるので、乱数の回数を10倍づつ増やす。

▼Cの場合、以下のソースを「test.c」にコピペ。
「gcc -O3 test.c」で出来た「a.out」を実行。

「みその計算物理学」さん、ありがとう。

http://www.geocities.jp/supermisosan/montecarlo.html

初期値は、1千万。比較のため、7千万、7億、70億にすると、

(1千万) : 3.141130
7千万 : 3.141485
7億 : 3.141585
70億 : 3.141591(15分位かかった)


▼C++版の場合、以下のソースを「test.cc」にコピペ。

「system("PAUSE");」はエラーが出るので削除。
「g++ -O3 test.cc -o b.out」で出来た「b.out」を実行

「YuAoki」さん、ありがとう。

http://slashdot.jp/~YuAoki/journal/196582

初期値は70万。

70万 : 3.14116
700万 : 3.14149
7000万 : 3.14159
7億 : int のままでは「overflow」で実行出来ませんでした。

▼Wikipedia 円周率から引用

π = 3.14159 26535 89793 23846 26433 83279 50288 …

http://ja.wikipedia.org/wiki/%E5%86%86%E5%91%A8%E7%8E%87

●使う言語や、アルゴリズム、宣言の型によりますが、
「精度」の意味では、3位までは有効だと考えて良いのではないでしょうか。


■「C、C++」以外にも様々な言語で簡単に実装できます。
今回は精度を確認することが目的ですので、自分ではプログラムを書きませんでした。
「C、C++」が使えない場合は、以下も参考に。

▼EXCEL 用

「中野正勝」さん。

http://aero.kouku-k.ac.jp/nakano/IT3/pi_MC.htm

▼web用

「宍戸 輝光」さん。

http://www.sm.rim.or.jp/~shishido/pie.html