這是我第一次在這裏發佈的東西,所以請善待:)以自己的班級方法助推隨機發生器
這是我的問題。
我想用提高隨機數發生器,因爲它是在這個例子中http://www.boost.org/doc/libs/1_46_1/libs/random/example/random_demo.cpp
的例子作品在我的電腦上完全正常進行,唯一的問題是,當我在我創建了一個類中使用它,輸出都是一樣的,我不明白爲什麼,因爲他們不在這個例子。該類的名稱稱爲Edge,並有兩個私人成員,即A點,B點(經典示例類)。所以你可以看到一個「邊緣」作爲一個端點A和B的段。我的目標是在這個段上繪製一個隨機點。
所以,當我做
int main(){
Edge test;
for (int i=0;i<10;i++)
std::cout << test.draw_a_double() << endl;
return 0;
}
它總是返回相同的編號:(
這裏是.h文件的方法:
double draw_a_Point();
這裏是「#包括「在.cpp文件中(我應該把它們放在.h文件中,因爲我沒有在我的項目的所有文件中使用它們):
#include <ctime>
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/uniform_real.hpp>
#include <boost/random/variate_generator.hpp>
typedef boost::mt19937 base_generator_type;
這裏是我的方法的代碼:
base_generator_type generator(42u);
generator.seed(static_cast<unsigned int>(std::time(0)));
boost::uniform_real<> uni_dist(0,1);
boost::variate_generator<base_generator_type&, boost::uniform_real<> > uni(generator, uni_dist);
double diffChosen=uni();
return diffChosen;
我因爲主要和唯一的問題來自於一個事實,即diffChosen是永遠不變的這裏不歸路對象。
這個問題是出自只有在主函數中隨機數發生器工作的事實嗎?
謝謝
將'generator'移到函數之外,並且只播種一次。 – Jarod42