モンテカルロ法実装例
今回はモンテカルロ法を用いて問題を解く.モンテカルロ法で問題を解く場合,乱数が必要となるので,まず疑似乱数を作るプログラムの関数を先に表0に載せておく.これは引数が2つでminからmaxまでの乱数を作る関数である.なお,この乱数を使う場合,main文でsrand((unsigned) time(NULL))を使い乱数の初期化を行う.また,これから載せるソースコードは重要な部分だけを載せることにする.すべてのプログラムで,ヘッダファイルのstdlib.h,stdio.h,time.hをインクルードしている.
double getRM(double min, double max){
return min + (max-min)*rand()/RAND_MAX;} <表0 疑似乱数を作る関数>
ここから,出題された問題を解いていく.
1.モンテカルロ法で円の面積を求めるプログラムを作成し,その結果と公式で得られる値と比較する.
次のプログラムを作成し,それを実行した(表1.1).このときの円の半径は0.5に設定している.
<表1.1 ソースコードと実行結果>
int m=0, n;
dou...