このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1260532772/753
# [1] 授業単元: プログラミング
# [2]問題文:
# モンテカルロ法による円周率の近似値の計算を行うプログラムを書け。
# 生成する点の個数はキーボードから受け取るようにせよ。
# 乱数の生成にはMersenne twisterを用いよ。
#

モンテカルロ法で円周率を計算する(_円周率) :-
    モンテカルロ法で円周率を計算する(1,10000,0,_円周率),!.

モンテカルロ法で円周率を計算する(M,N,Y,X) :- M > N,X is 4.0 * Y / N,!.
モンテカルロ法で円周率を計算する(M,N,Y,X) :-
    U1 is ((random mod 10000) / 10000) ^ 2,
    U2 is ((random mod 10000) / 10000) ^ 2,
    U1 + U2 =< 1.0,
    Y2 is Y + 1,
    M2 is M + 1,
    モンテカルロ法で円周率を計算する(M2,N,Y2,X),!.
モンテカルロ法で円周率を計算する(M,N,Y,X) :-
    M2 is M + 1,
    モンテカルロ法で円周率を計算する(M2,N,Y,X),!.