Boost 1.46.1のpoisson_distributionを使った乱数生成は動かない
古い話かもしれないが, 今使っているUbuntu 12.04のboost/tr1/random.hpp (tr1/random)で, poisson_distributionを用いた乱数生成をしようとすると動かない. 動いてもとても遅く, おかしな値が返ってくる.
実際, Boostのサイトから現状の最新版である1.53.0をダウンロードして展開し, インクルードパスに指定してコンパイルするとちゃんと動作した (g++ -I/path/to/boost_1_53_0 test.cpp && ./a.out). 使ったコードは以下の通り.
#include <boost/tr1/random.hpp> #include <iostream> #include <ctime> int main(void) { static std::tr1::mt19937 eng; eng.seed((unsigned int)time(NULL)); // std::tr1::uniform_int<int> dist(1, 52); std::tr1::poisson_distribution<int, double> dist(7.5); for (unsigned int i(0); i < 100; ++i) { std::cout << dist(eng) << " " << std::flush; } std::cout << std::endl; return 0; }