c++ - 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
为每个呼叫创建一个新的会非常昂贵,但是,我感兴趣的是为什么单线是不可能的,而不是不实用的——也就是说我对创建匿名对象的一般情况(不确定这是否是正确的术语)。
解决方案
推荐阅读
- typescript - 强制通用类型匹配函数定义
- c# - Task.GetAwaiter().GetResult() 导致 Windows 服务死锁
- python - 如何在 Python 3 中使用正则表达式查找字符串?
- javascript - 带有下拉菜单和按钮的 Flexbox 布局
- java - 字符串加运算符和字符串生成器追加的优缺点是什么?
- android - 如何让安卓应用/游戏在运行时占据手机的整个屏幕?
- java - Java 日志记录语句的奇怪行为
- mysql - 按间隔将时间戳分组在一起并以秒为单位计算差异
- unity3d - 在 Unity3D 中异步加载场景不起作用
- node.js - 表单发布使 req.body.[输入名称] 未定义