乱数生成の速度

乱数が必要になったが、速度的なボトルネックになりそうな気がしたので、いくつかの乱数生成関数の速度を調査することにした。実行コードはこんな感じ(random.cpp)で、100000回乱数を生成する。

関数 所要時間(秒) 速度比
rand 0.0063734 x1.00
RtlRandomEx 0.0270574 x4.25
boost::mt19937 0.0017343 x0.27

乱数の精度については私はまるで解らないし、そもそもどうでもいいので判断しないが、とにかくRtlRandomExは遅い。でもって標準関数よりも速いメルセンヌツイスターにワロタ。


(追記)ずいぶんとトンチンカンなタイマーを使っていたので修正しました。修正ついでに、表記を10回実行した結果の平均値にしました。