0
我想用C++ 11中的normal_distribution生成數字。使用Qt 4.8 MinGW。我已經加入下一行在Qt中使用std :: tr1 :: normal_distribution
QMAKE_CXXFLAGS + = -std =的C++ 0x
我.pro文件 再和下一個錯誤: '的swprintf ::' 尚未聲明 'vswprintf ::'尚未聲明
我想用C++ 11中的normal_distribution生成數字。使用Qt 4.8 MinGW。我已經加入下一行在Qt中使用std :: tr1 :: normal_distribution
QMAKE_CXXFLAGS + = -std =的C++ 0x
我.pro文件 再和下一個錯誤: '的swprintf ::' 尚未聲明 'vswprintf ::'尚未聲明
使用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的是不是很好呢。 (缺少包含或缺少名稱空間前綴)。
「some_symbol還沒有被聲明」可能意味着你錯過了一個頭文件,如果它在編譯過程中發生的話。如果它在連接過程中發生,那麼你可能會錯過一個庫。你能發佈完整的錯誤信息嗎? – Seth 2012-03-10 23:22:30
如果你使用'-std = C++ 0x',那麼你應該使用'std :: normal_distribution'。 TR1是C++ 98的庫! – 2012-03-10 23:22:57
可能的重複項:http://stackoverflow.com/q/3445312/894321 – alexisdm 2012-03-11 00:07:19