如何在本地设置和全局设置之间以C 11 RNG的初始状态进行切换
How do I switch between local and global settings for the initial state of a C++11 RNG?
在下面给出的代码中,我想实现一个标志(或同样简单的东西),该标志与评论 local 设置并使用相同的效果 global 设置某个设置(在此示例中产生两个不同的数字),并在其他时间使用本地设置(在此示例中产生两个相同的数字)。
我尝试了明显的" if"answers" switch"结构,没有成功。
#include <iostream>
#include <random>
void print();
std::seed_seq seed{1, 2, 3, 4, 5};
std::mt19937 rng(seed); // *global* initial state
std::uniform_real_distribution<> rand01(0, 1);
int main()
{
print();
print();
return 0;
}
void print()
{
std::mt19937 rng(seed); // *local* initial state
std::cout << rand01(rng) << std::endl;
}
使用 ternary 和a 参考:
std::mt19937& ref = flag ? rng : local;
在这里, flag
是测试的条件, rng
是"全局"随机对象,而 local
是更本地化的对象。
将引用与三元的结果结合在句法上是有效的:您不能使用if
语句或类似于正确类型的 empressions 相似。
从那时起,请使用ref
。只要rng
和local
保留在范围内。
相关文章:
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 具有动态大小的特征矩阵的默认初始状态
- 什么是"初始班次状态"?
- QWeb通道新客户端获得初始状态?
- 成员变量未保持初始化状态
- 线路抑制状态错误 C4703 可能未初始化的局部指针变量"back"已使用
- MSVC2015初始化应保持未初始化状态的类成员
- 我们可以在 caa 的构建图方法中只使用初始状态和空状态吗?
- Linux Opensuse C 编译器问题.(无法初始化部分调试器的解压缩状态)
- 如何在本地设置和全局设置之间以C 11 RNG的初始状态进行切换
- QT状态机:如何在初始状态下设置防护措施
- Qt QState机器同步问题:初始状态未在启动信号上设置
- 是否存在将filein重置为初始状态的方法
- 如何读取MIDI脚部控制器的初始状态
- 是否可以在pdf文件中重新初始化图形状态
- 使无序初始化状态有序
- 如何将boost::optional设置回未初始化状态
- STL:用未构造的有状态比较器初始化容器
- boost::MPI 的 irecv() 返回未初始化的状态对象
- 将对象重置为初始状态的模式