このディレクトリの索引
#  出典: C/C++の宿題片付けます 136代目 #874 
#  [1] 授業単元:C言語プログラミング 
#  [2] 問題文(含コード&リンク):モンテカルロ法で円周率を求めるプログラムを作れ。 
# 

モンテカルロ法で円周率を求める(_試行数,_円周率) :-
        '正方形の中に適当に点を打つとき、その点が正方形の一辺を直径とする円の円内にある数'(_試行数,_円内にある数),
        _円周率 is (_円内にある数 * 4) / _試行数.

'正方形の中に適当に点を打つとき、その点が正方形の一辺を直径とする円の円内にある数'(_試行数,_円内にある数) :-
        count((for(1,N,_試行数),落ちた点は円内にある),_円内にある数).

落ちた点は円内にある :-
        '落ちた点と原点の距離が辺の長さ(1.0)以内'.

'落ちた点と原点の距離が辺の長さ(1.0)以内' :-
        X is ((random mod 2001) - 1000) / 1000,
        Y is ((random mod 2001) - 1000) / 1000,
        X * X + Y * Y =< 1.0,!.