Excelを用いたモンテカルロシミュレーションによるランダムウォーク

        



            図1 ランダムウォークのグラフ

Excel VBA 2007/2003/2002対応(できる大辞典)

POD>乱数とモンテカルロ法POD版

入門ベイズ統計学

社会システム工学の考え方

確率と統計

コンピュータシミュレーション

ビジネスマンのための「数字力」養成講座 (ディスカヴァー携書 20)


完全独習 統計学入門



ランダムウォーク


 ランダムウォークは酔っぱらいの運動です。
ある地点(原点)に酔っぱらいが立っており、任意の方向(ランダム)に1m移動します。
その地点からまた、任意の方向(ランダム)に1m移動します。
これを数回繰り返した後、酔っぱらいは最初の点(原点)からどれだけの距離にいるで
しょう。



EXCELの乱数を用いモンテカルロシミュレーション


モンテカルロは言わずと知れたバクチの町です。
バクチ(サイコロ)を使ってシミュレーションを行うことをモンテカルロシミュレーションと
いいます。

コンピュータの発達前、正20面体のサイコロを使い、シミュレーションが行われていた。
正20面体の場合、0〜9の数字を2箇所につくれば、10進数のサイコロが作れます。

コンピュータではサイコロの代わりに、(0〜1)の一様乱数が用意されています。

野球のコンピュータゲームを自動モードで実行すると、コンピュータ内で、選手個人の
データ(打率など)に基づき、
乱数を使い、打球の方向などをきめ、ゲームが進行します。
短時間で何万試合でも行えるため、最適打順を決めるシミュレーションにも使えそうです。

EXCELの乱数(rand())はあまり性能が良くないようで、より良い乱数を組み込む必要が
あるかもしれません。



EXCELを用いたランダムウォーク


図2のように、最初(N0. 1)の位置は原点(0,0)です。

2回目の方向(0〜360度)を乱数できめます。セル位置で =rand()*360 を入力します。
(randは0〜1の一様乱数のため、360倍すると0〜360の一様乱数となる)
角度の計算(sin,cos)はラジアンです。(1度=π/180ラジアン)セル位置で =(度のセル)*pi()/180を入力します。
移動量は三角関数を使います。

X方向移動量 = cos(方向)
Y方向移動量 = sin(方向)

位置は前回の位置に移動量を加算します。
原点からの直線距離は位置から計算します。 = sqrt(X^2+Y^2) となります。

3回目以降は2回目をコピーするだけで、出来上がります。


         図2 モンテカルロシミュレーションによるランダムウォークの結果



ランダムウォークのグラフ


図3のように、EXCELのグラフ機能を使い、ランダムウォークを図化します。

参考 :エクセル(EXCEL)でグラフを作ってみよう


           図3 ランダムウォークのグラフ






ランダムウォークの確率分布


 ランダムウォークによる酔っぱらいの位置の確立分布を求めます。1回目は必ず原点から1mの位置にいますが、2回目以降の確立分布関数を解析的に求めることは難しい。そこでモンテカルロシミュレーションによりこの確立分布を算出します。
 図-4のように、原点からの距離の範囲を設定し、ランダムウォークを10000000回試行し、範囲に入った酔っぱらいの数をカウントします。試行回数を増やせば増やすほど、確立分布は理論解に近づきます。


           図-4 ランダムウォークを試行するエクセルシート

ランダムウォークの試行は図-5のVBAを作成し、実行します。


              図-5 ランダムウォークを試行するVBA

 算出された確立分布をグラフにしました。エクセルの乱数は性能が悪いようで、なめらかな曲線になっていないところもあります。

                図-6 ランダムウォークの確立分布グラフ



エクセルを用いた標準正規分布に従う乱数(正規乱数)の発生

 







EXCELを用いた科学技術計算
EXCELのソルバーを用いた科学技術計算



〒673−0036 兵庫県明石市松江62−14
(有)ゴッドフット企画



感想をお聞かせ下さい



JR福知山線 脱線事故シミュレーション

脱線事故シミュレーションもEXCELで
(Yahoo Japan 掲載)


Copyright (C) GODFOOT 2007 All Rights Reserved.