我使用的是uniform_int_distribution在升壓1.52生成使用基本樣板代碼的隨機數:如何在標準構造函數之外設置boost :: 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實例或其他東西。如何做到這一點?我試圖理解類模板的「Public Member Functions」部分: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()本身是一個調用的函數,還是它是另一個函數的替身?我無法找到另一個提升我做的問題的例子。預先感謝您的幫助和建議!
「均勻分佈」類只有兩個整數數據成員,所有構造函數都會分配它們的值。使用全局對象並每次設置值都可能產生接近相同的代碼。 –