このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1312201995/827
#  [1] 授業単元:モンテカルロ 
#  [2] 問題文(含コード&リンク):http://ime.nu/ideone.com/foLSr 
#  
#  問題1. サイコロを10, 100 ,1000 ,10000 ,100000 回投げて分布を調べよ。
#  問題2. コイン投げも同様にして、Sn = X1 +....+ Xn のSn, そのmax,min を調べよ。
#  問題3.  面積
#  ∫ 1 
#    0  x^2 dx
#  をモンテカルロ法で求めよ。
#  
#  問題4. π の値をモンテカルロ法で求めよ。
#  問題5. 2 項分布をp=0.4 として実行してみよ。分布は、**** を打って表示せよ。

'2 項分布をp=0.4 として実行してみよ。分布は、**** を打って表示する'(_n) :-
        _p = 0.4,
        findall([_k,Y],(
                    for(0,_k,_n),
                    Y is (_p^_k) * (1-_p)^(_n-_k)),
                _二項分布),
        '分布は、**** を打って表示する'(_二項分布).

'分布は、**** を打って表示する'([]).
'分布は、**** を打って表示する'([[_k,Y]|R]) :-
        'Yを0から100まで範囲に変換'(Y,Y2),
        星並びアトムを作る(Y2,_星並びアトム),
        横向きにグラフ表示(_k,_星並びアトム),
        '分布は、**** を打って表示する'(R).

'Yを0から100まで範囲に変換'(Y,Y2) :-
        Y2 is truncate(Y * 100).

星並びアトムを作る(N,_星並びアトム) :-
        length(L,N),
        all(L,'*'),
        concat_atom(L,_星ならぴアトム).

横向きにグラフ表示(_k,_星並びアトム) :-
        writef('%4c: %t\n',[_k,_星並びアトム]).