- 締切済み
モンテカルロ法と線形合同法
モンテカルロ法の円周率を求める時に点の数を増やすと精度があがりますが、線形合同法の周期性を考慮した場合どこまで精度があげられますか?
- nakayamayosie
- お礼率83% (30/36)
- その他(プログラミング・開発)
- 回答数1
- ありがとう数5
- みんなの回答 (1)
- 専門家の回答
みんなの回答
モンテカルロ法に用いた乱数のよさに依存するので.乱数のよさが分からない限り.答えはわかりません。
関連するQ&A
- モンテカルロ法
モンテカルロ法を使って計算を行う際に、 ある方法を用いて乱数列を発生させ、それを用いて行いました。 この乱数列は50の区分に分けた後、 カイ2乗分布による危険率1%の頻度検定 に合格したものを用いたのですが、 これではモンテカルロ法による計算を行うには 正しいとはいえないとのことでした。 これはなぜなのでしょうか。 確かに、50区分の頻度検定だけでは、 極端な話、周期50の数列がちょうど50区分に分かれて発生していて 結果として一様乱数となっているような場合も考えられます。 それでは、周期が計算に必要な乱数の数に対して十分に大きいとき、 モンテカルロ法として正しいと言えるようになるのでしょうか? 解説をよろしくお願いします。
- ベストアンサー
- 数学・算数
- モンテカルロ法 円周率
モンテカルロ法で円周率を求めたいのですが C++でプログラムを実行までは出来るんですけど それをグラフにする方法が分かりません。 (扇形みたいなヤツです。点々が沢山付くヤツです。) あと「モンテカルロ法から演習路津が求まる原理」と 「エクセルとCプログラミングで円周率を求めた時の 比較の仕方」も教えて頂きたいのです…。 沢山聞いてしまって、本当にすいません。 なにとぞ、初心者なのでよろしくお願いします。
- ベストアンサー
- C・C++・C#
- モンテカルロ法
モンテカルロ法で円周率の推定値を計算することを最近習ったのですが、定積分でもそれが可能なのを知り、どうやってプログラムを組めばいいのか分からず、困っています。 例えば、定積分∫[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
- ベストアンサー
- C・C++・C#
- fortran モンテカルロ法
モンテカルロ法により円周率πを計算するプログラムを作ったのですが、以下のプログラムでモンテカルロ法から推定された円周率piの値が実行すると大きな数字になってしまって、うまく計算できてない見たです。式に問題があるのでしょうか?教えて下さい。 rogram list1_9 implicit none real(8) x, y, pi, pi0 integer :: n, i, im = 2**20 pi0 = 2.0d0*acos(0.0d0) n = 0 do i = i, im call random_number(x) call random_number(y) if(x ** 2 + y ** 2 <= 1.0d0) n = n + 1 enddo pi = 4.0d0*dble(n)/dble(im) write(*,*) ' pi, pi0, er = ', pi, pi0, pi-pi0 end program list1_9
- ベストアンサー
- その他(プログラミング・開発)
- 線形合同法の欠点について
線形合同法の欠点について wikipediaで線形合同法(http://ja.wikipedia.org/wiki/%E7%B7%9A%E5%BD%A2%E5%90%88%E5%90%8C%E6%B3%95)の欠点の項目を見ると、 『最下位ビットは、同じものが出続けるか、0と1が交互にでるかのどちらかである。これは、最下位ビットが結果的に、奇数か偶数かを示しているため、偶数ばかりが出る、奇数ばかりが出る、偶数と奇数が交互に出る、という意味である。』 と書いているのですが、生成の例を見ると「奇数(3)→奇数(1)→偶数(8)」と結果が出ています。欠点の項目で書かれてあることと違うじゃんと思って、この矛盾について検索しまくって調べたのですが、よく理解できませんでした。 よろしければ教えていただけないでしょうか?
- ベストアンサー
- 数学・算数
- BASICでモンテカルロ法
モンテカルロ法で円周率の推定値を計算することを最近習ったのですが、定積分でもそれが可能なのを知り、どうやってプログラムを組めばいいのか分からず、困っています。 例えば、定積分∫[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 y=RND SET POINT STYLE 2 IF y<x*x THEN SET POINT COLOR 4 LET sumin=sumin+1 END IF ! PRINT USING "(%.####, %.####)": x,y PLOT POINTS: x,y NEXT i PRINT 1*1*sumin/n END
- ベストアンサー
- その他(プログラミング・開発)
- 大富豪におけるモンテカルロ法について
私は現在、モンテカルロ法を用いた大富豪AIの構築を行おうとしています。 そこで質問&確認なのですが、 モンテカルロ法(仮に原始モンテカルロ)とは、 (1)ある条件下でとりあえず出せる手の内でランダムな手を出しつつゲーム全体を最後までプレイさせ、終わった時にどの条件下でどの手を出した時有効か有効でないかを記録し、最終的にそれらを統計的に見て、例えば『場に7以下が出ている場合は8を出せば統計的に有効なので出す。』というように手を決定する。 (2)ある条件下で、相手の手札を推測し、その上でランダムな手を出しつつ最後までプレイ(ただ、この「最後までプレイ」というのは自ターン時に別ルーチンで進める。プレイヤーの頭の中のみでゲームが行われているイメージ)し、最も評価の高かった手を出す。この時、ゲーム全体で見れば、自プレイヤーがただ普通に1ターンの内にカードを出したようにみえる。 の二つの内のどちらが正しいのでしょうか(画像参照)。 また、原始モンテカルロを改良した「モンテカルロ木探索」「UCB1を用いたモンテカルロ」についてもご教授していただければ幸いです。 色々調べたり論文をあさったりしているのですが未だ理解が及ばない状況です。 勉強不足で申し訳有りませんが、何卒ご教授願います
- 締切済み
- Java
お礼
質問が不十分ですいません。