我在 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 实例。如何做到这一点?我试图理解类模板的“公共成员函数”部分: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() 本身是要调用的函数,还是另一个函数的替身?我找不到另一个可以满足我要求的提升示例。提前感谢您的帮助和建议!