2012-03-10 8 views
0

C++ 11でnormal_distributionで数値を生成したいと考えています。 Qt 4.8 MinGWを使用する。私は私の.PROファイル に次の行Qtでstd :: tr1 :: normal_distributionを使用する

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

を追加した後、次のエラーを取得: 'swprintfは::' 宣言されていません 'vswprintf ::'は宣言されていません

+0

"some_symbolが宣言されていません"というのは、コンパイル時にヘッダーファイルが見つからないということです。リンク中に起こっている場合は、おそらくライブラリがありません。あなたは完全なエラーメッセージを投稿できますか? – Seth

+2

'-std = C++ 0x'を使うなら、' std :: normal_distribution'を使うべきです。 TR1はC++ 98のライブラリです! –

+0

可能な複製:http://stackoverflow.com/q/3445312/894321 – alexisdm

答えて

2

TR1は、以前の標準の制限を満たすように設計されているため、C++ 11を使用する場合は避けてください。 (有用であると考えられていたものもすべて標準に統合されました)

幸いなことに、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の特定の実装が、とにかく非常に良いではありませんかのように、あなたが見てき。 (名前空間の接頭辞が含まれていないか欠落しています)。

関連する問題