このディレクトリの索引
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 として実行してみよ。分布は、**** を打って表示せよ。
#  */
#  

'2 項分布をp=0.4 として実行してみよ。分布は、**** を打って表示せよ。' :-
        findall(Count,(
                  between(1,100,N),
                  count((between(1,100,M),
                         U is random(1000),
                         U < 400),
                        Count)),
                L),
        分布を表示する(L).

分布を表示する(L) :-
        between(0,100,N),
        表示文字列を生成(N,L,_表示文字列),
        writef('%t: %t\n',[_カウント表示文字列]),
        N = 100.

表示文字列を生成(N,L,_表示文字列) :-
        整数から文字列(2,Count,_カウント表示文字列),
        findall((*),(
                      member(N,L)),
                L),
        atomic_list_concat([_カウント表示文字列,': '|L],_表示文字列).

整数から文字列(_文字列桁,_整数,_文字列) :-
        桁不足の場合頭部には空白を詰める(_文字列桁,_整数,_文字列),!.
整数から文字列(_文字列桁,_整数,_文字列) :-
        atom_number(_文字列,_整数).

桁不足の場合頭部には空白を詰める(_文字列桁,_整数,_文字列) :-
        length(L,_文字列桁),
        number_chars(_整数,Chars),
        append(L0,Chars,L),
        all(L0,' '),
        atomic_list_concat(L,_文字列).