• 締切済み

C アルゴリズム(モンテカルロ法)

C言語でモンテカルロ法を用いてπの計算をしたいがどうすればいいですか??

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

わからないのは、そのうちのどの部分ですか? 全部、というのなら、まずは参考書などである程度プログラムが作れるようになってからにしてください。ここで説明できるほど簡単なことではありません。 πを求めるときによく使うのは、 x,y(0≦x,y≦1.0)の2つ1組の乱数を使って、座標(x,y)と原点(0,0)の距離が1.0以内になる確率を求める というものです。 (x,y)の全範囲は1辺が1.0の正方形 距離1.0以内となるのは、原点から半径1.0の扇型の範囲 ということで、 確率= 扇型の面積 / 正方形の面積 で計算できます。この式をπについて解けば、確率からπを求めることができます。

回答No.1

「モンテカルロ法 円周率」というキーワードで検索をかけると山ほどCのソース例が出てきますよ。 例: http://www.natural-science.or.jp/article/20090221002034.php http://www.geocities.jp/supermisosan/montecarlo.html http://www.rs.kagu.tus.ac.jp/yamalab/2010/hamano/calculation-program.html まずはそのものずばりの単語で検索してみるのが良いでしょう。 以上、ご参考まで。

関連するQ&A

  • モンテカルロ法

    モンテカルロ法を使って計算を行う際に、 ある方法を用いて乱数列を発生させ、それを用いて行いました。 この乱数列は50の区分に分けた後、 カイ2乗分布による危険率1%の頻度検定 に合格したものを用いたのですが、 これではモンテカルロ法による計算を行うには 正しいとはいえないとのことでした。 これはなぜなのでしょうか。 確かに、50区分の頻度検定だけでは、 極端な話、周期50の数列がちょうど50区分に分かれて発生していて 結果として一様乱数となっているような場合も考えられます。 それでは、周期が計算に必要な乱数の数に対して十分に大きいとき、 モンテカルロ法として正しいと言えるようになるのでしょうか? 解説をよろしくお願いします。

  • モンテカルロ法

    固体中の電子の軌道をモンテカルロ法によってシミュレーション計算するということについて知っていることがあれば教えてください。

  • セルフテストモンテカルロ法のプログラム

    今、モンテカルロ法の勉強をしており、いろいろ調べていったらセルフテストモンテカルロ法というものがありました。文献をいろいろ読み、原理はなんとなくわかったのですが、C言語でのプログラミングをどのようにすればよいのか思い付きません。一例で良いのでわかる方、御回答をよろしくお願い致します。

  • モンテカルロ法 計算精度

    モンテカルロ法で円周率をc++言語でプログラムを作成して求めたのですが、精度要因って何ですか??乱数の乱数らしさでしょうか??

  • 数値積分 モンテカルロ法を用いて

    次の問題をモンテカルロ法を用いたC言語のプログラムを教えてください。 積分区間[0,10] ∫x^3+x^2-2x+10dx です お願いします。

  • 凖モンテカルロ法 or モンテカルロ + MT

    3次元に広がる物理量を面積分する方法について検討中です。 凖モンテカルロという方法でLDSという数列を用いて計算をすると、積分計算の 誤差の軽減が速まるらしいということがわかりました。原理はまだ勉強中ですが、 対象の空間を区切って、それぞれの細空間に乱数のポイントを配置することが いい方向に働くように見られます。 これに対して、通常のモンテカルロ法でメルセンヌツイスター(MT)を用いた場合との 違いがいまいちわかりません。MTで一様乱数ができるのであれば、凖モンテカルロ のようにする必要はないのでしょうか?

  • モンテカルロ法とは?

    モンテカルロ法という言葉をたまに耳にするのですが 試行錯誤法とどこが異なるのでしょうか? 検索してみてもどうも同じ手法のように思えて仕方がないのですが。 お願い致します。知っている人がいたら教えてください。

  • モンテカルロ法

    モンテカルロ法で円周率の推定値を計算することを最近習ったのですが、定積分でもそれが可能なのを知り、どうやってプログラムを組めばいいのか分からず、困っています。 例えば、定積分∫[0→1]x^2dx=1/3~0.333([0→1]というのは、積分範囲です。)をモンテカルロ法で計算すると、どういうプログラムを組めばいいのでしょうか? わかる範囲で書いてみたのですが…積分の範囲をどうやってプログラミングすればいいのか、いまいち分かりませんでした。 教えていただけると、助かります。よろしくお願いします。 RANDOMIZE INPUT n SET WINDOW -0.1, 1.1, -0.1,1.1 DRAW grid SET POINT STYLE 1 LET sumin=0 FOR i=0 TO n LET x=RND LET r=x*x SET POINT COLOR 2 ! PRINT USING "(%.####, %.####)": x,y; PLOT POINTS: x,y; NEXT i PRINT sumin;n PRINT sumin/n END

  • モンテカルロ法

    自分は現在、大学の1年生です。 パソコン関係に弱く、よく分からないことが多く、 質問があるので教えて頂ければ嬉しいです 大学のレポ(宿題)で「モンテカルロ計算をする際に周期の短い疑似乱数を使うとどのような問題が生じるか説明せよ」という問題がでました。 この回の講義を休んでいたせいもあって、まずモンテカルロ計算や疑似乱数について漠然としか理解できていません。 なので簡単に解説してくれるか、もしくは参考URLを載せてくれたら嬉しいです

  • モンテカルロ法 円周率

    モンテカルロ法で円周率を求めたいのですが C++でプログラムを実行までは出来るんですけど それをグラフにする方法が分かりません。 (扇形みたいなヤツです。点々が沢山付くヤツです。) あと「モンテカルロ法から演習路津が求まる原理」と 「エクセルとCプログラミングで円周率を求めた時の 比較の仕方」も教えて頂きたいのです…。 沢山聞いてしまって、本当にすいません。 なにとぞ、初心者なのでよろしくお願いします。

専門家に質問してみよう