State モナドと疑似乱数で書いたように、遅延評価が利用できる言語では、無限数列が扱えるので、疑似乱数を使う際に状態を持たなくてもよい。その一例として、モンテカルロ法による円周率の近似を挙げてみる。 XY 平面に単位円を考える。 radius :: Double radius = 1.0この円がぴったり収まる大きさ1の正方形を描く。ここで、第一象限のみを考える。正方形のうち、第一象限にある部分の面積は、1/4。第一象限にある円の面積は、全体の 1/4 だから π/4。 モンテカルロ法では、第一象限の正方形の中に、ランダムに点(x,y)を打つ。たくさんのランダムな点を、疑似乱数から生成しよう。そのとき、状態を持つのではなく、乱数の無限数列を生成する。 import Random randomSeq :: Int -> [Double] randomSeq seed = randomRs (
考察 1,000回で誤差3%程度に、10,000回で誤差1%程度に、100,000回で誤差0.1%程度に、1,000,000回で誤差0.05%程度に、10,000,000回で誤差0.01%程度になります。 コンピュータのスペックによっては、10,000,000回以降はきつい場合があります。ブラウザが応答しなくなるかもしれません(><) あんまり回数を増やすとJavaScriptの疑似乱数の限界にぶちあたる気がします。
確率法則を用いて問題を解くモンテカルロ法(Monte Carlo meyhod)では、質のよい乱数が必要である。 C言語で用意されている関数randと、高品質で高速に乱数を生成できるとして知られるメルセンヌ・ツイスタを利用して、円周率を評価してみる。 また、その際のアルゴリズムとして「あたりはずれ法」と「粗いモンテカルロ法」を用いて計算する。 図1のような単位円の第1象限領域の面積をモンテカルロ法にて求め、 解析的に求められる面積$\pi/4$と比較することによって、円周率の評価を行うことにする。 図1.単位円の第1象限領域 あたりはずれ法 あたりはずれ法とは、面積を評価したい領域$S_A$を面積が既知の領域$S$で囲み、 領域$S$上に分布が一様になるように$N$個の点を降らせる。 領域$S_A$上に落ちた点の数が$N_A$であれば、$S_A$の面積は、 で評価することができる。 図1の
Suppose you’re doing something that has probability of success p and probability of failure q = 1 − p. If you repeat what you’re doing m+n times, the probability of m successes and n failures is given by Now suppose m and n are moderately large. The terms (m+n)! and m! n! will be huge, but the terms pm and qn will be tiny. The huge terms might overflow, and the tiny terms might underflow, even tho
今日は,普段どのようにして専門知識を仕入れているかについて書いてみようと思います.特に自分が得意でない分野を知りたいと思った時に,どうするかに注目したいと思います.自分の専門の場合は,いくらでも時間を注ぐことが出来るので,世界中のリソースを全て探し当てて勉強すれば良いのですが,ちょっと興味が有るぐらいではそこまでやる時間は取れません.なので出来るだけ効率的に分かった気になるのが目標です. まず,論文を直接読むのはあまり効率的では無いと思います.論文は広い分野の中の或る問題に対して一つの解決方法を書いているだけで,分野全体を俯瞰することは目指していません.論文だけ読んで分野全体を理解するには,最低50本ぐらい読む必要が有ると思います.
1 �� Randomized Algorithm �� 2 1 (randomized algorithm) . . . (probabilistic algorithm, stocastic algorithm) [8, 11] (randomized algorithm) 2 2 (1) (2) 1 2E-mail: watanabe@is.titech.ac.jp procedure QuickSort(A, B); % Given A[1..n], compute its sorted permutation to B[1..n]. i ← random number from {1,...,n}; k ← A[i]; A1 ← elements of A[1..n] smaller than k; A2 ← the other elements of A[1..n]; Quic
ゲーム理論,賭けの科学を中心としたサイトNABENAVI.netです. CONTENTS ゲーム理論のナビゲータ 研究活動 賭けの科学 じゃんけん研究 プロフィール リンク 連絡先・アクセス いろいろ このサイトは 更新履歴 新着情報 - 最近の更新 「じゃんけん研究」のページを更新.(2010.09.18) 待望の「じゃんけん研究」のコンテンツ作成へ踏み出しました.まず,話題の「わたなべじゃんけん」の解説とビデオを公開!(2008.04.26) ゼミナールゲーム理論に誤り・誤植が見つかっています(特に演習問題の解答).皆様には御迷惑をおかけしています.正誤表と訂正を「ゼミナールゲーム理論入門」のページに掲載しています.(2008.04.23) 「ゼミナールゲーム理論入門」の発売に関して,コンテンツを整理しました.古い講義資料などはなくなりました.これまでの講義ノートは「ゼミナールゲーム理
離散一様分布(りさんいちようぶんぷ、英: discrete uniform distribution)は、確率論や統計学における離散確率分布の一種であり、有限集合の全ての値について、等しく確からしい場合である。 確率変数が n 個の値 k1, k2, …, kn を同じ確率でとりうるとき、離散一様分布と言える。任意の ki の確率は 1/n である。離散一様分布の単純な例としてサイコロがある。その場合の k がとりうる値は 1, 2, 3, 4, 5, 6 で、1回サイコロを振ったとき、それぞれの値が出る確率は 1/6 である。2個のサイコロを振って和をとると、もはや一様分布ではなくなり、とりうる値(2 から 12)によって確率が変わってくる。 離散一様分布の確率変数がとりうる値が実数の場合、累積分布関数を退化分布を使って表すことができる。すなわち、 ここで、ヘヴィサイドの階段関数 は、x
僕個人はゲームの思考ルーチンを作ることなどには興味があるので、みんな知っていることだと思っていたのですが、意外と「現在世界最強の囲碁の思考ルーチンはモンテカルロ」ってのは知られてないみたいですね。うっかりすると「そんなわけないだろー」とか言われてしまう。その根底には「モンテカルロはとても収束が遅くて使いものにならない」という過去の記憶があるのかなー。ちょうどJavaScriptが使いものにならないおもちゃ言語だと思われていたように。 囲碁の思考ルーチンを著しく進化させた新しいモンテカルロが昔の単純なモンテカルロとどう違うかというと、UCB1という評価関数で「もっと探索するとヨサゲな局面」を判断して、ヨサゲな局面から優先的に探索するという点なんだけど、そういう定性的な話をしてもピンと来ないよね。同じ発想をモンテカルロで円周率を求めるプログラムに適用したら収束の速さが定量的にはっきり見えて面白
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く