C ++ 11:类中的随机数生成器

时间:2017-03-22 16:48:36

标签: c++ c++11 random

  

这个问题已经解决了!关键是使用{}启动   而不是使用()。所以改成它   std::normal_distribution<> rnorm{0,1};虽然您可能会看到许多旧的在线示例仍在使用()

我正在考虑使用固定种子生成随机正常,以进行可重复的研究。为了很好地说明我的问题,我制作了以下极简主义代码。当我将随机生成器放入类中时,它会报告错误。第一个代码块出了什么问题?我该如何解决?非常感谢你的帮助!

#include <iostream>
#include <random>
using namespace std;

class RandNorm{
private:
    unsigned seed = 12345;
    std::default_random_engine generator(seed);
    std::normal_distribution<> rnorm(0,1);

public:
    double getrnorm(){
    return rnorm(generator);
    }

};

int main() {
  RandNorm x;
  cout << x.getrnorm() << endl;
  return 0;
}

但它运作良好我只是在主函数中输入如下

#include <iostream>
#include <random>
using namespace std;

int main() {

    unsigned seed = 12345;
    std::default_random_engine generator(seed);
    std::normal_distribution<> rnorm(0,1);

    for(int i=1; i<10; i++){
        cout << rnorm(generator) << endl;
    }

 return 0;
}

0 个答案:

没有答案