2012-03-10 51 views
0

我想用C++ 11中的normal_distribution生成數字。使用Qt 4.8 MinGW。我已經加入下一行在Qt中使用std :: tr1 :: normal_distribution

QMAKE_CXXFLAGS + = -std =的C++ 0x

我.pro文件 再和下一個錯誤: '的swprintf ::' 尚未聲明 'vswprintf ::'尚未聲明

+0

「some_symbol還沒有被聲明」可能意味着你錯過了一個頭文件,如果它在編譯過程中發生的話。如果它在連接過程中發生,那麼你可能會錯過一個庫。你能發佈完整的錯誤信息嗎? – Seth 2012-03-10 23:22:30

+2

如果你使用'-std = C++ 0x',那麼你應該使用'std :: normal_distribution'。 TR1是C++ 98的庫! – 2012-03-10 23:22:57

+0

可能的重複項:http://stackoverflow.com/q/3445312/894321 – alexisdm 2012-03-11 00:07:19

回答

2

使用C++ 11時應該避免使用TR1,因爲它旨在滿足以前標準的限制。 (也被認爲有用的所有東西都繼續存在,並且被整合到標準中。)

幸運的是,在C++ 11中有一個全面的隨機數生成庫,並具有正態分佈。

在這裏看到:

http://en.cppreference.com/w/cpp/numeric/random

#include <random> 
::: 
std::random_device rd; 
std::normal_distribution<double> dist(0,99); 
std::mt19937 engine(rd()); 
double a=dist(engine); 

確切的錯誤你得到的樣子,就好像特定實現TR1的是不是很好呢。 (缺少包含或缺少名稱空間前綴)。

相關問題