PythonとCでモンテカルロ法を用いて円周率を求めてみた | たくのこ Web
環境
メルセンヌ・ツイスタの乱数生成器と実数の指定した範囲で一様分布させる標準ライブラリを使いました。打ち込んだ点の個数は1億個です。
コンパイラはclang 3.5、標準ライブラリの実装はlibc++を使いました。
PCのスペックはCPU: i5-3340M、RAM: 4GBです。
結果
結果はこんな感じです。Cのrand()を使うよりも遅いですが、3.1415までは合ってますね。もっと正確な値はこちらにのってます。ソースは下に貼っておきます。面倒だったので全部main()に詰め込んで書きました()。
毎回乱数のシードを変える場合は、mtなんちゃらの行をコメントアウトされている文で置き換えて下さい。
$ clnag++ calculate_pi.cpp -std=c++14 -stdlib=libc++ -o pi_cpp
$ time ./pi_cpp
3.14151
./pi_cpp 8.78s user 0.00s system 99% cpu 8.784 total