このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1342966104/309
#  [1] 授業単元:C言語プログラム演習 
#  [2] 問題文: 
#  ../test/read.cgi/tech/1342966104/308の関数を用いて、1からuまでの乱数をN回発生させ、1から10までのそれぞれの数が発生した回数を数値および*の数で表し、さらに乱数の平均値も表示するプログラムを作成せよ。 
#  <出力例> 
#  1 :9回 : ********* 
#  2 :11回 : *********** 
#  3 :10回 : ********** 
#   
#  10 :5回 : ***** 
#  平均:5.54 
#  

'1からuまでの乱数をN回発生させ、1から10までのそれぞれの数が発生した回数を数値および*の数で表し、さらに乱数の平均値も表示する'(_u,N) :-
        '1からuまでの乱数をN回発生させ'(_u,N,L),
        '1から10までのそれぞれの数が発生した回数を数値および*の数で表し'(L),
        'さらに乱数の平均値も表示する'(L).

'1からuまでの乱数をN回発生させ'(_u,N,L) :-
        findall(_1から_uまでの乱数,(
                    between(1,N,_),
                    _1から_uまでの乱数 is random(_u) + 1),
                L).

'1から10までのそれぞれの数が発生した回数を数値および*の数で表し'(L,_度数を表す数値,_度数を表すグラフ) :-
        '1から10までの'(N),
        'それぞれの数が発生した回数を'(L,_度数),
        '数値および*の数で表し'(_度数,_度数を表す数値,_度数を表すグラフ),
        writef('%t: %t回 %t\n',[_度数を表す数値,_度数を表すグラフ]),
        N = 10.

'1から10までの'(N) :-
        between(1,10,N).

'それぞれの数が発生した回数を'(L,_度数) :-
        count(member(N,L),_度数).

'数値および*の数で表し'(_度数,_度数を表す数値,_度数を表すグラフ) :-
        _度数 = _度数を表す数値,
        '度数を*で表す'(_度数,_度数を表すグラフ).

'度数を*で表す'(_度数,_度数を表すグラフ) :-
        length(L,_度数),
        all(L,'*'),
        atomic_list_concat(L,_度数を表すグラフ).

'さらに乱数の平均値も表示する'(L) :-
        相加平均(L,_平均値),
        writef('乱数の平均値: %t\n',[_平均値]).