Pat*_*ryk 5 c++ random prng c++11
在 C++11 中,可以使用std::random_device或不使用像 mt19937 这样的伪随机数生成器来生成数字。
在此示例代码中使用它会有什么区别:
#include <random>
#include <iostream>
int main() {
std::random_device rd;
std::mt19937 mt(rd());
std::uniform_real_distribution<double> dist(1, 10);
for (int i=0; i<16; ++i)
std::cout << dist(rd) << "\t" << dist(mt) << "\n";
}
Run Code Online (Sandbox Code Playgroud)
std::random_device应该可以为您提供像mt19937. 产生的连续数字的质量完全未定义,并且很容易不足以满足实际目的(例如密码学),因此依赖它是毫无问题的。
除此之外,mt19937当给予相同的种子时,会给你相同的序列。A random_devices 值只能受赋予其构造函数的字符串影响......这意味着实现定义的行为。