このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1289913298/184
#  [1] 授業単元:プログラミング  
#  [2] 問題文(含コード&リンク):平均値:μ,分散:σ^2の分布がn個与えられているとする。 
#   この分布が何であろうと、nの数が多きなるにつれてこの分布の合計は平均:nμ,分散:nσ^2の正規分布に近づくとされる。 
#   要素数n個をもつx個の乱数系列を発生させるプログラムを作れ。  
#  

乱数を発生させる(_x個,_要素数,_平均・分散ならび,_乱数系列ならび) :-
        length(Ln,_x個),
        乱数を発生させる(Ln,_要素数,_平均・分散ならび,_乱数系列ならび) :-

乱数を発生させる([],_,_,[]) :- !.
乱数を発生させる([_|R1],_要素数,[[_平均,_分散]|R3],[_乱数ならび|R4]) :-
        標準正規分布(1,_要素数,1.0,_平均,_分散,_標準正規分布ならび),
        findall(_乱数,(
                    append(_,[V|_],_標準正規分布ならび),
                    _乱数 is truncate(V * 1000000000) mod 10000),
                _乱数ならび),
        乱数を発生させる(R1,_要素数,R3,R4).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

標準正規分布(_母集合,_台の最小値,_台の最大値,_刻み,_標準正規分布ならび) :-
        相加平均(_母集合,_平均),
        分散(_母集合,_分散),
        標準正規分布(_台の最小値,_台の最大値,_刻み,_平均,_分散,_標準正規分布ならび).

標準正規分布(X,_台の最大値,_刻み,_平均,_分散,[]) :- X > _台の最大値,!.
標準正規分布(X,_台の最大値,_刻み,_平均,_分散,[[X,Y]|R]) :-
        標準正規分布確率密度(X,_平均,_分散,Y),
        X2 is X + _刻み,
        標準正規分布(X2,_台の最大値,_刻み,_平均,_分散,R).

標準正規分布確率密度(X,_平均,_分散,_確率密度) :-
        U is -1 * (((X - _平均) ^ 2) / (2 * _分散)),
        _確率密度 is exp(U) / sqrt(2 * pi * _分散).