このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1342966104/592
#  [1] 授業単元:データ構造入門 
#  [2] 問題文(含コード&リンク):問題文が長いためこちらに記載しました http://ime.nu/ideone.com/R8gaZ 
#  
#  【問題1】
#  サイコロのように1から6の目を等確率で発生させる関数を、rand()関数を用いて次の方法で作成せよ。
#  1+(int)(6.0*rand()/(1.0+RAND_MAX)); の演算で、1から6まで発生させる。
#   

'サイコロのように1から6の目を等確率で発生する乱数'(_サイコロのように1から6の目を等確率で発生する数) :-
        _サイコロのように1から6の目を等確率で発生する数 is ceiling(6.0 * random(2147483647) / (1.0+2147483647)).



サイコロ乱数発生テスト(_繰り返し回数,_1,_2,_3,_4,_5,_6) :-
        findall(N,(
                    between(1,_繰り返し回数,_),
                    'サイコロのように1から6の目を等確率で発生する乱数'(N)),
                L),
        findall(Count,(
                    between(1,6,M),
                    count(member(M,L),Count)),
                [_1,_2,_3,_4,_5,_6]).

count(P,Count) :-
        findall(1,P,L),
        length(L,Count).