このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/395
#  ../test/read.cgi/tech/1335517816/393 
#  ありがとうございます。 
#  {1] 授業単元:プログラミング  
#  [2] 問題文:  
#  くじの0等から4等までの本数と賞金は次の通りである。  
#  0等   1等  2等 3等 4等  
#  5      10    25   150  810  本数[本]  
#  10000 3000 400 100  0 賞金[円]  
#  くじを1本引くときの賞金の期待値(平均値)を計算するプログラムを作成しなさい。 
#  

くじ本数('0等',5).
くじ本数('1等',10).
くじ本数('2等',25).
くじ本数('3等',150).
くじ本数('4等',810).

くじ賞金('0等',10000).
くじ賞金('1等',3000).
くじ賞金('2等',400).
くじ賞金('3等',100).
くじ賞金('4等',0).

'くじを1本引くときの賞金の期待値(平均値)を計算する'(_賞金の期待値) :-
        くじの賞金総額を計算する(_くじの賞金総額),
        くじの本数(_本数),
        _賞金の期待値 is _くじの賞金総額 / _本数.

くじの賞金総額を計算する(_くじの賞金総額) :-
        findsum(_等級別賞金総額,(
                    くじ本数(_くじ等級,_等級別本数),
                    くじ賞金(_くじ等級,_等級別賞金),
                    _等級別賞金総額 is _等級別賞金 * _等級別本数),
                _くじの賞金総額).

くじの本数(_本数) :-
        findsum(_等級別本数,(
                    くじ本数(_くじ等級,_等級別本数)),
               _本数).