このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1269438098/312
#  [1] 授業単元: Introduction to C++ 
#  [2] 問題文: ユーザーにサイズN(最大で100000)を入力させ、そのサイズのArrayを1〜100までのランダムな数字で埋めた後、N個のランダムな数字を数字1、数字2、数字3・・・という具合にカウントするプログラムを書きなさい 
#  (元の文が英文なのですが、約した際に何かしら抜け落ちている点が在るかもしれないので一応原文も記載しておきます) 
#  Write a program that asks user to enter a size, N. (The maximum is 100000). Write a 
#  function that generates random numbers in range of 1 ~ 100 and fill an array of size N. 
#  You also need to count how many 1’s, 2’s, 3’s, 
#  4’s, 5’s, …, 100’s. If the random number function does it job perfectly, the distribution to 
#  each number should be equal. But they might be slightly off. 
#  3] 環境 
#   [3.1] OS:Vista 
#   [3.2] コンパイラ名とバージョン:Visual C++ 2008 
#   [3.3] 言語:C++ 
#  [4] 期限: 2010/04/30 
#  [5] その他の制限: なし 
#   

'ユーザーにサイズN(最大で100000)を入力させ、そのサイズのArrayを1〜100までのランダムな数字で埋めた後、N個のランダムな数字を数字1、数字2、数字3・・・という具合にカウントする' :-
      'ユーザーにサイズN(最大で100000)を入力させ'(N),
      そのサイズのArray(L,N),
      '1〜100までのランダムな数字で埋めた後'(L),
      'N個のランダムな数字を数字1、数字2、数字3・・・という具合にカウントする'(L).

'ユーザーにサイズN(最大で100000)を入力させ'(N) :-
      催促付き整数入力('サイズN(最大で100000)を入力してください :',N),!.

'そのサイズのArrayを1〜100までのランダムな数字で埋めた後'([]) :- !.
'そのサイズのArrayを1〜100までのランダムな数字で埋めた後'([M|R]) :-
      M is (random mod 100) + 1, 
      'そのサイズのArrayを1〜100までのランダムな数字で埋めた後'(R).

'N個のランダムな数字を数字1、数字2、数字3・・・という具合にカウントする'(L) :-
      for(1,N,100),
      count(member(N,L),Count),
      write_formatted('%tの度数=%t\n',[Count]),
      N=100.