我想验证一下,如果种子是相同的,那么产生的伪随机数是相同的。使用rand()是最简单的,但我正在寻找更安全的方法。我发现将设备熵与/dev/随机linux一起使用是非常可靠的,但无法找到如何设置完全相同的种子。我也尝试了密码随机窗口,但找不到方法来设置种子。我能用那些使用设备的随机发生器做人工种子吗?或者还有其他随机生成器库,我可以设置手动种子?
发布于 2019-10-19 18:12:54
是否有任何随机生成器库,除了rand(),哪个开发人员可以手动设置种子?
是。有许多可用的随机数生成器(大多数是可种的),它们都优于rand()
(这是非常糟糕的)。不要在生产代码中使用srand()
/rand()
。
查看头。
我建议将std::mt19937
用于非加密目的(确保正确地为它添加种子,而不仅仅是使用单个int
),如果需要原始熵(请确保检查您的实现是否真正正确地实现了它,标准--错误的IMHO --允许它返回到PRNG)。远离std::default_random_engine
,你不知道它会给你带来什么。
发布于 2019-10-19 18:14:54
是的,<random>
允许这样做,切换到它是个好主意。C++的<random>
库是far superior到<stdlib>
的rand()
函数,并允许您在编写的任何生产代码中使用<random>
。
https://stackoverflow.com/questions/58466543
复制相似问题