每个呼叫都会生成不同数字的函数:我应该通过引擎,分配还是两者兼而有之
A function that generates a different number at each call: should I pass the engine, the distribution or both?
我很难准确理解分布在给定随机引擎中的作用。假设我想编写一个函数f(/* Arguments */)
,该功能使用std::mt19937
引擎和std::uniform_int_distribution<int>
在每个调用处返回一个新的随机号码。我希望此功能是线程安全的。我的问题是:我应该通过参考此功能,引擎,发行或两者兼而有之?
有可能分布来缓存某些状态,从而减少对发动机的通话频率以获取熵。例如,盒子毛刺将两个样品从均匀分布中映射到正态分布的两个样本中。可以通过Box-Muller实现std::normal_distribution
,以便每秒钟对发动机进行两个调用。
理想情况下,您可以存储一个引擎和分布的每线程 - 或更详细的,但肯定不少 - 并将lambda或 std::function<int()>
传递给您的功能f
,以将其与获取方式的详细信息隔离。
相关文章:
- 我应该使用什么来代替void作为变体中的替代类型之一
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 我应该删除矢量<short>吗?
- 我应该如何修改此代码以使用给定字符串中的字母打印菱形图案
- 我应该在锁定TBitmap画布后解锁它吗
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 我应该避免多重实现继承吗
- 为了方便起见,我应该避免公开私有字段变量吗
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 违反const正确性:我应该现实地期待什么问题
- 我应该如何表示我拥有的连续元素序列?
- 我应该将除 .cpp 以外的其他文件添加到 git 中吗?
- 我应该如何从 stdin C++ 中读取可变长度的格式字符串?
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 我应该如何捕捉out_of_range异常?
- 我应该声明所有不抛出 noexexcept 的成员/函数吗?
- 每个呼叫都会生成不同数字的函数:我应该通过引擎,分配还是两者兼而有之
- 我应该使用从std::random_device种子的随机引擎,还是每次都使用std::random_device