• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:モンテカルロ法)

モンテカルロ法で円周率の推定値を計算する方法

このQ&Aのポイント
  • モンテカルロ法とは、確率論と統計学の手法の1つです。
  • 定積分をモンテカルロ法で計算する方法について分かりやすく説明します。
  • モンテカルロ法を使って円周率の推定値を計算するプログラムの組み方を教えます。

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

質問のソースはカテゴリ違いですが、 アルゴリズムに関する質問だと思いますので、 言語に依存しない部分で回答します。 f(x) = x*x の関数を、0~1の区間で積分ですね。 まず、y 軸の範囲を考えます。 グラフを書けば分かりやすいと思います。 f(0) = 0 から始まり、xが増加すれば f(x) も増加。 f(1) = 1 で終わりなので、y 軸の範囲は 0~1 とします。 --------------------------------- ループ回数 n の入力 カウント sumin を初期化 ループ開始(n 回ループ) x に 0~1の乱数を代入(積分区間) y に 0~1の乱数を代入(上記で計算した範囲) ポイント(x, y) が求める面に入っていればカウントする つまり、y < x*x の場合はカウント sumin に 1 を加算 ループ終了 結果は、(乱数範囲の面積) × (カウント) ÷ (ループ回数) つまり、 1 * 1 * sumin / n --------------------------------- 円周率の場合とほとんど変わらないと思います。 このアルゴリズムを、お使いのBASICで記述して下さい。 そのBASICでの記述方法が分からないと言うのなら、 「その他(プログラミング)」の方が良いかも。

juck0808
質問者

お礼

回答ありがとうございます。 道筋だけでも教えて頂き、とても助かります。 ありがとうございました。

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

こちらはC/C++のカテゴリーです。 投稿されたコードはBASIC系の言語のものであるように お見受けします。 このコードをC/C++に置き換えたらどうなるか、という ご質問でしょうか?

juck0808
質問者

補足

BASICでお聞きしたいのですが…このカテゴリーじゃないみたいですね。すみません、カテゴリーを間違えたみたいです。 内容的に、その他(プログラミング)で質問するべきなのでしょうか?