このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 133代目 #753 # [1] 授業単元: プログラミング # [2]問題文: # モンテカルロ法による円周率の近似値の計算を行うプログラムを書け。 # 生成する点の個数はキーボードから受け取るようにせよ。 # 乱数の生成にはMersenne twisterを用いよ。 # 限界試行回数(100000). モンテカルロ法で円周率を計算する(_円周率) :- 限界試行回数(_限界試行回数), モンテカルロ法で円周率を計算する(1,_限界試行回数,0,_円周率),!. モンテカルロ法で円周率を計算する(_試行回数,_限界試行回数,_度数,_円周率) :- _試行回数 > _限界試行回数,_円周率 is 4.0 * _度数 / _限界試行回数,!. モンテカルロ法で円周率を計算する(_試行回数,_限界試行回数,_度数,_円周率) :- '半径1.0の円の内側に点が描かれたら試行回数と度数を1増やし、さもなくば試行回数のみカウントする'(_試行回数,_限界試行回数,_度数,_円周率). '半径1.0の円の内側に点が描かれたら試行回数と度数を1増やし、さもなくば試行回数のみカウントする'(_試行回数,_限界試行回数,_度数,_円周率) :- '半径1.0の円の内側に点が描かれたら試行回数と度数を1増やして行く'(_試行回数,_限界試行回数,_度数,_円周率),!. '半径1.0の円の内側に点が描かれたら試行回数と度数を1増やし、さもなくば試行回数のみカウントする'(_試行回数,_限界試行回数,_度数,_円周率) :- さもなくば試行回数のみカウントして行く(_試行回数,_限界試行回数,_度数,_円周率). '半径1.0の円の内側に点が描かれたら試行回数と度数を1増やして行く'(_試行回数,_限界試行回数,_度数,_円周率) :- '半径1.0の円の内側に点が描かれたら試行回数と度数を1増やし、'(_試行回数,_度数,_試行回数_2,_度数_2), モンテカルロ法で円周率を計算する(_試行回数_2,_限界試行回数,_度数_2,_円周率),!. '半径1.0の円の内側に点が描かれたら試行回数と度数を1増やし、'(_試行回数,_度数,_試行回数_2,_度数_2) :- '描写された点が半径1.0の円の内側に描かれたら', '試行回数と度数を1増やし、'(_試行回数,_度数,_試行回数_2,_度数_2). '描写された点が半径1.0の円の内側に描かれたら' :- 描写された点が(_点のx座標,_点のy座標), '半径1.0の円の内部に描かれたら'(_点のx座標,_点のy座標). 描写された点が(_点のx座標,_点のy座標) :- 描写された点のx座標(_点のx座標), 描写された点のy座標(_点のy座標). 描写された点のx座標(_点のx座標) :- random_between(0,999,X), _点のx座標 is X / 1000. 描写された点のy座標(_点のy座標) :- random_between(0,999,Y), _点のy座標 is Y / 1000. '半径1.0の円の内部に描かれたら'(_点のx座標,_点のy座標) :- _点のx座標 ^ 2 + _点のy座標 ^ 2 =< 1.0. '試行回数と度数を1増やし、'(_試行回数,_度数,_試行回数_2,_度数_2) :- succ(_度数,_度数_2), succ(_試行回数,_試行回数_2). さもなくば試行回数のみカウントして行く(_試行回数,_限界試行回数,_度数,_円周率) :- succ(_試行回数,_試行回数_2), モンテカルロ法で円周率を計算する(_試行回数_2,_限界試行回数,_度数,_円周率).