如何播种 pcg 随机数生成器?
How to seed the pcg random number generator?
在 samples for PCG 他们只播种一种方式,我认为是 best/preferred 实践:
pcg32 rng(pcg_extras::seed_seq_from<std::random_device>{});
或
// Seed with a real random value, if available
pcg_extras::seed_seq_from<std::random_device> seed_source;
// Make a random number engine
pcg32 rng(seed_source);
但是 运行 我的机器上的这个每次都产生相同的种子。如果我只是输入一些整数作为我自己的种子,那也好不到哪儿去。如果以这种方式尝试不起作用,什么是播种的好方法?
pcg_extras::seed_seq_from
应该是推荐的方式,但它将实际种子生成委托给模板参数中指定的生成器。
MinGW 的 std::random_device
实现有问题。所以此时如果要针对MinGW,一定不能使用std::random_device
.
一些潜在的替代方案:
boost::random_device
- randutils,作者 PCG,M.E。奥尼尔
seed11::seed_device
,直接替换 std::random_device
(免责声明:这是我自己的图书馆)
this blog post by M.E. O'Neill 中有关播种的更多信息。
在 samples for PCG 他们只播种一种方式,我认为是 best/preferred 实践:
pcg32 rng(pcg_extras::seed_seq_from<std::random_device>{});
或
// Seed with a real random value, if available
pcg_extras::seed_seq_from<std::random_device> seed_source;
// Make a random number engine
pcg32 rng(seed_source);
但是 运行 我的机器上的这个每次都产生相同的种子。如果我只是输入一些整数作为我自己的种子,那也好不到哪儿去。如果以这种方式尝试不起作用,什么是播种的好方法?
pcg_extras::seed_seq_from
应该是推荐的方式,但它将实际种子生成委托给模板参数中指定的生成器。
MinGW 的 std::random_device
实现有问题。所以此时如果要针对MinGW,一定不能使用std::random_device
.
一些潜在的替代方案:
boost::random_device
- randutils,作者 PCG,M.E。奥尼尔
seed11::seed_device
,直接替换std::random_device
(免责声明:这是我自己的图书馆)
this blog post by M.E. O'Neill 中有关播种的更多信息。