基本的な定型コードを使用して乱数を生成するために、Boost 1.52 で uniform_int_distribution を使用しています。
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/uniform_int_distribution.hpp>
boost::random::mt19937 gen;
int roll_die()
{
boost::random::uniform_int_distribution<> dist(1, 6);
return dist(gen);
}
int main()
{
for (int i = 0; i < 10; i++) std::cout << roll_die() << std::endl;
}
これの一部をはるかに大きなプロジェクトに実装しましたが、うまく機能します。これが私の質問です。
上記の関数では、dist オブジェクトが関数に対してローカルであるように見えます。roll_die() を何度も呼び出すと、 dist() を関数に対してローカルにすると、多くのオーバーヘッドが発生するようです。
このオブジェクトの最小パラメータと最大パラメータを一度設定してから、より大きなオブジェクトなどに dist のインスタンスを 1 つだけ持つ方がよいと考えています。どうやってこれを行うのですか?クラステンプレートの「パブリックメンバー関数」部分を理解しようとしました: http://www.boost.org/doc/libs/1_47_0/doc/html/boost/random/uniform_int_distribution.html#id744736-bbしかし、それは頭を超えて。そのドキュメントでは、次のように表示されます。
void param(const param_type & param); //Sets the parameters of the distribution.
これを実際にどのように使用しますか?.param() 自体は呼び出す関数ですか、それとも別の関数の代役ですか? 私が求めていることを行った別のブーストの例が見つかりませんでした。ご支援とアドバイスをよろしくお願いします。