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

'サイコロを10,100,1000,10000,100000 回投げて分布を調べよ'(N,0,0,0,0,0,0,_1,_2,_3,_4,_5,_6) :-
        append(_,[_何回|R],[10,100,1000,10000,100000]),
        サイコロの目の頻度(0,_何回,L1,L2),
        writef('投げた回数..%t,  1..%t,2..%t,3..%t,4..%t,5..%t,6..%t\n',[_何回|L2]),
        R = [].

サイコロの目の頻度(_何回,_何回,L,L) :- !.
サイコロの目の頻度(N,_何回,L1,L) :-
        _サイコロの目 is random(6) + 1,
        頻度に加算(_サイコロの目,L1,L2),
        N_2 is N + 1,
        サイコロの目の頻度(N_2,_何回,L2,L).
        
頻度に加算(1,[_1,_2,_3,_4,_5,_6],[_1_2,_2,_3,_4,_5,_6]) :-
        _1_2 is _1 + 1.
頻度に加算(2,[_1,_2,_3,_4,_5,_6],[_1,_2_2,_3,_4,_5,_6]) :-
        _2_2 is _2 + 1.
頻度に加算(3,[_1,_2,_3,_4,_5,_6],[_1,_2,_3_2,_4,_5,_6]) :-
        _3_2 is _3 + 1.
頻度に加算(4,[_1,_2,_3,_4,_5,_6],[_1,_2,_3,_4_2,_5,_6]) :-
        _4_2 is _4 + 1.
頻度に加算(5,[_1,_2,_3,_4,_5,_6],[_1,_2,_3,_4,_5_2,_6]) :-
        _5_2 is _5 + 1.
頻度に加算(6,[_1,_2,_3,_4,_5,_6],[_1,_2,_3,_4,_5,_6_2]) :-
        _6_2 is _6 + 1.