2013-09-25 33 views
0
std::default_random_engine generator; 
std::lognormal_distribution<double> distribution(0,8); 
double number = distribution(generator); 
cout<<number; 

我需要隨機使用一個數字在C++中使用lognormal_distribution。 我第一次運行程序時,我得到了號碼= 4.92852e-05。 但是第二次,第三次......我也得到了同樣的結果。所以當我多次運行程序時,我需要不同的結果。我需要做什麼 ???隨機生成器給出相同的結果,當我編譯和運行C++

在此先感謝。

+2

你應該在'std :: random_device'上使用'operator()'調用初始化'std :: mt19337'。 – chris

+0

糟糕,s/mt19337/mt19937/ – chris

+0

我真的不明白你的想法。你可以給代碼嗎? –

回答

1

由於隨機數生成器使用相同的種子,每次運行程序時都會得到相同的值。嘗試:

#include <time.h> 

std::default_random_engine generator; 
generator.seed(time(0)); 
std::lognormal_distribution<double> distribution(0,8); 
double number = distribution(generator); 
std::cout<<number; 

這應該使用當前時間播種發生器。

相關問題