-3

このエラーを取り除く方法を教えてもらえますか? 正規分布を生成する必要があります。しかし、私には何も機能しません。

C++でコードを書いてみました。しかし、表示:

エラー 1 エラー C2039: 'mt19937': は 'std" のメンバーではありません。

normal_distribution は std のメンバーではありません

4

2 に答える 2

3

randommt19937 ("Mersenne Twister") ジェネレーターを定義するヘッダーを含めるのを忘れていました。

完全な例を次に示します。

edd@max:/tmp$ cat cxx12_random.cpp 

// use 'g++ -std=c++0x -o cxx12_random cxx12_random.cpp'

#include <random>
#include <iostream>

int main(int argc, char *argv[]) {

  std::mt19937 engine(42);
  std::normal_distribution<> normal(0.0, 1.0);

  for (int i=0; i<5; i++) {
    std::cout << normal(engine) << std::endl;
  }
}
edd@max:/tmp$ g++ -std=c++0x -o cxx12_random cxx12_random.cpp
edd@max:/tmp$ ./cxx12_random 
-0.550234
0.515433
0.473861
1.36845
-0.916827
edd@max:/tmp$ 

経由で新しい C++ 拡張機能を有効にしたことに注意してください-std=c++0x。コンパイラで同じことをしなければならない場合があります。

于 2013-01-06T14:53:16.693 に答える
1

これはc++ 11でのみ利用できると思います。あなたのコンパイラはそれをサポートしていますか?

于 2013-01-06T14:55:02.560 に答える