此处是C ++的初学者。
我一直在使用以下函数在C ++中生成随机数:
double randDouble() {
std::random_device rd;
std::mt19937 mt(rd());
std::uniform_real_distribution<double> dist(1.0, 10.0);
return dist(mt);
}
我想知道为什么我无法像这样用一行文字(使用临时对象)来做到这一点:
double randDouble2() {
return std::uniform_real_distribution<double>{1.0, 10.0}(std::default_random_engine(std::random_device{}()));
}
我想我在某处读到了有关默认构造函数的信息,这些默认构造函数对于这些类不是显式的,但是我真的不确定要搜索什么以确定我是否正确?
我还读到,这将是一种不好的做法,因为为每个呼叫创建一个新的random_device
会非常昂贵,但是,我对为什么单线不可能 感兴趣。 >而不是实用-也就是说,我对一般案例创建匿名对象(不确定这是否正确)感兴趣。