首页 > 解决方案 > C++在一行中生成

问题描述

这里是 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为每个呼叫创建一个新的会非常昂贵,但是,我感兴趣的是为什么单线是不可能的,而不是不实用的——也就是说我对创建匿名对象的一般情况(不确定这是否是正确的术语)。

标签: c++random

解决方案


推荐阅读