連続座標ランダムウォーク(課題0301)

[全課題リスト|サンプルソース|完成した実行ファイル(実習室のみ)|完成したソースの例] Time-stamp: "2004/12/19 Sun 21:11 hig"

プログラム作成

座標 x が連続な値をとるようなランダムウォークを考えよう. ただし, 座標が x -> x+rとジャンプする遷移確率密度を, W(x+r|x)=p(r) ただし,

3(-0.5 ≤ r ≤ -0.25),
p(r)= 1(1.25≤ r ≤ 1.5),
0 (それ以外)

としよう.

サンプルrw1d4.cマニュアルにしたがってコンパイル, 実行すると次のようになります.

ランダムウォークの長さ?
25
シード?
3098
とすると, 3098 を seed として, 長さ 5 の1次元ランダムウォークを行い,
0	0.0000
1	0.0000
2	0.0000
3	0.0000
4	0.0000
5	0.0000
中略
25	0.0000

ここで, 2つの数の間の空白は TAB( printf の format では \t)です.

このサンプルrw1d4.cを, 講義L03 (代替) の説明を参照して 書き換えて, 次のような, ランダムウォークの途中経過を表示するプログラムをつくろう.

ランダムウォークの長さ?
25
シード?
3098
とすると, 3098 を seed として, 長さ 25 の1次元連続座標ランダムウォークを行い,
ランダムウォークの長さ?
25
シード?
3098
0       0.000000
1       -0.673344
2       -0.553586
3       -1.118670
4       -1.676133
中略
25      -9.362798
のように出力します.

エクセルでグラフ表示

上のような結果は, スペースと * ではうまく表わせません. そこで表計算ソフトウェア Excel の助けを借りましょう.

まず, 上の26 × 2 個の数の出力をテキストファイルとして保存します. これには 講義L12 (代替) で説明する標準出力を利用します. Linux のシェルなら

% ./rw1d4 > data1.txt 
としますが, Visual Studio .NET の中では, 説明にしたがって, プロジェクト > プロパティ > デバッグ > コマンドライン引数 に, > Q:\csc\data1.txt と指定することにします. (今の場合なら, メモ帳へのコピーアンドペーストでもできちゃうけど, 後のことを 考えてこの方法でやりましょう)

このようにした後, デバッグ > 開始(デバッグなしで開始でなく) すると, 出力の内容がQ:\csc\data1.txtに書かれます. これを Excel で開きます(拡張子が .xlsでなく .txtであることに注意. 何個か質問されますが, 無難に答えます). そして, 挿入 > グラフ > 散布図 で, この 2 × 26 の領域を指定してグラフを描きます. 例えばこんな感じでしょうか?


Copyright © 2004 Saburo Higuchi. All rights reserved.
樋口三郎, hig mail address