这个问题已经解决了!关键是使用
{}
启动 而不是使用()
。所以改成它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;
}