高校か大学の教科書の最初に載っているようなもんですけどね.
せっかくRubyの環境が出来て,モンテカルロ法入門も始まって,具体例があった方がいいよね,ということで.
プログラムはこれくらいです.
j = 1;
(1..1000).each{|i|
s1 = rand() - 0.5;
s2 = rand() - 0.5;
if Math::sqrt(s1**2+s2**2)<=0.5 then
j += 1;
end;
puts j.to_f/i;
}
大量に数字が流れるので,ファイルに落として下さい.
落としたファイルを,gnuplotにかけてみました.
この場合の,emacsのスクリーンショットは,こんな感じです.