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

'1
∫ x^2dx  をモンテカルロ法で求めよ
0'(_積分値) :-
        '区間0..1範囲のx^2dxの積分値をモンテカルロ法で求めよ'(_積分値).

'区間0..1範囲のx^2dxの積分値をモンテカルロ法で求めよ'(_積分値) :-
        'x^2dx  をモンテカルロ法で求めよ'(0,0,_頻度),
        _積分値 is _頻度 / 100000.

'区間0..1範囲のx^2dxの積分値をモンテカルロ法で求めよ'(100000,_頻度,_頻度) :- !.
'区間0..1範囲のx^2dxの積分値をモンテカルロ法で求めよ'(N,_頻度_1,_頻度) :-
        頻度を更新する(_頻度_1,_頻度_2),
        N_2 is N + 1,
        '区間0..1範囲のx^2dxの積分値をモンテカルロ法で求めよ'(N_2,_頻度_2,_頻度).
頻度を更新する(_頻度_1,_頻度_2) :-
        _x is random(10001) / 10000,
        _y is random(10001) / 10000,
        _y =< _x ^ 2,
        _頻度_2 is _頻度_1 + 1,!.
頻度を更新する(_頻度,_頻度).