このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/300
#  [1] 授業単元:ランダム・ウォーク 
#  [2] 問題文(含コード&リンク): 
#  http://ime.nu/www.kent-web.com/pubc/book/test/uploader/uploader.cgi?mode=downld&no=5450 
#  
#  課題1 2次元ランダムウォーク
#   ここでは、x座標、y座標とも変化量をN(0,1)に従う独立な正規乱数とすること
#  で、等方的な2次元ランダム・ウォークを考える。
#  
#  1.原点を出発点とする等方的な2次元ランダム・ウォークを1000ステップ実行す
#  るプログラムを作成せよ。各ステップごとに座標値を表示し、 1000ステップの
#  軌跡を描け。
#  
#  2.同じく原点を出発点とする等方的な2次元ランダム・ウォークを1000ステップ
#  実行するプログラムを作成せよ。ただし、今度のプログラムは 1000ステップ後
#  の原点からの距離を表示するものとする。
#  このプログラムを1000回実行し、原点からの距離をヒストグラムにせよ。ヒスト
#  グラムに描く範囲や階級幅は得られた値から適当と思えるように適 宜設定する
#  こと。
#  
#  
#  課題2 幾何ランダム・ウォーク
#  確率変数Xiは0.9以上1.1未満の一様乱数とする。この確率変数に対し、初期値を
#  1として幾何ランダム・ウォークを実行するプログラムを作成する。
#  
#  1.1000ステップを実行し、各ステップごとの値の返歌をグラフにかけ。
#  
#  2.1000ステップの幾何ランダム・ウォークを1000回実行し、それぞれにおける最
#  終的な値のヒストグラムを作成せよ。ここでも、描く範囲や階級幅は適当に設
#  定すること。

'1000ステップを実行し、各ステップごとの値の変化をグラフに描く。確率変数Xiは0.9以上1.1未満の一様乱数とする。この確率変数に対し、初期値を1として幾何ランダム・ウォークを実行する' :-
        length(L,1000),
        findall(Z,(
                    '確率変数Xiは0.9以上1.1未満の一様乱数とする'(L,1.0,Y),
                    Z is truncate(40.0 * Y)),
              L),
        グラフ描画(L).

'確率変数Xiは0.9以上1.1未満の一様乱数とする'([],_,_) :- !,fail.
'確率変数Xiは0.9以上1.1未満の一様乱数とする'(_,Y,Y).
'確率変数Xiは0.9以上1.1未満の一様乱数とする'([_|Ln],Y_1,Y) :-
        Y_2 is Y_1 * (0.9 + 0.2 * (random(100) + 1) / 100),
        '確率変数Xiは0.9以上1.1未満の一様乱数とする'(Ln,Y_2,Y).