dポイントプレゼントキャンペーン実施中!

モンテカルロ法での円周率の求めるプログラムを作るのですが、参考書などで調べても、円を1/4して試算し4倍にする方法しか出てきません。円を1/4せずにそのままで近似値を求めるプログラムはどのようにすればつくれるのでしょうか。教えていただければ幸いです。

A 回答 (4件)

0<x<1 0<y<1の乱数を作ります。


x^2+y^2<1の範囲にあれは、あたりとしてカウントします。
それを1万回繰り返して
あたりの数/1万で1辺1の正方形のなかで4分の1の円の中に入ったあたりの確率が分かります。
それを4倍すれば円周率になります。
 ここで円を4つに分けたくないとなれば
0<x<2。0<y<2にして
(x-1)^2+(y-1)^2<1でカウントすればいいと思います。
    • good
    • 1

モンテカルロ積分.

    • good
    • 1

敢えて行うとすれば


-1≦x≦1, -1≦y≦1の範囲のx,yを乱数で生成して、
2×2の正方形の面積に対して、その座標(x,y)が半径1の円に含まれる割合から求めれば良いのでは?
    • good
    • 0

そもそも式の意味を考えてみましたか?


1辺Lの正方形の中にぴったり収まった直径Lの円があったとすると、
ランダムに置いた点が円の中に納まっている確率は理想的には円の面積÷正方形の面積ですよね?
試行により円内に収まった割合をPとすると、
P=π((L/2)^2)/(L^2)
仮に円の半径をRと置いたとしても、
P=π(R^2)/((2R)^2)
どっちにしても、方程式を書き直すとπ=4Pです。

「円を1/4して試算」という読み方が間違っているように思います。
    • good
    • 3

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!