normal_distribution不是std的成员

时间:2013-01-06 14:50:25

标签: c++

谁能告诉我如何摆脱这个错误?我需要生成正态分布。但没有什么对我有用。

我试着用c ++编写代码。但是显示:

  

错误1错误C2039:'mt19937':不是'std'的成员。

     

normal_distribution不是std的成员

2 个答案:

答案 0 :(得分:3)

您忘了加入random,这是定义mt19937(“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$ 

请注意,我通过-std=c++0x启用了较新的C ++扩展。您可能必须对编译器执行相同的操作。

答案 1 :(得分:1)

我认为这只适用于c ++ 11。你的编译器是否支持它?