【发布时间】:2015-08-09 16:17:26
【问题描述】:
我有一个像这样调用 srand 和 rand 的函数:
void foo() {
int seed = some_operation();
std::srand(seed);
int value = std::rand();
// Do something with random value
}
但是,我不想更改 rand 的全局状态。那么获取随机数的最简单方法是什么?
要求:
- 随机数必须是基于种子的确定性
- C++11 没问题
- foo 应该是线程安全的
- 不应修改 rand 的全局状态
编辑:
有一个 stackoverflow question 询问如何生成随机数。然而,被接受的answer 展示了如何使用慢速 std::random_device 生成真正唯一的随机数。我只需要一个使用固定种子的简单生成器。
【问题讨论】:
标签: c++ c++11 random scope thread-safety