我想验证如果种子相同,则生成的伪随机数相同。使用rand()是最简单的方法,但我正在寻找更安全的方法。我发现在Linux的/ dev / random中使用设备熵非常可靠,但是找不到如何设置完全相同的种子。我也尝试了窗口的cryptgenrandom,但是找不到设置种子的方法。我可以使用那些使用设备的随机生成器手动生成种子吗?还是还有其他可以设置手动种子的随机生成器库?
是,<random>
允许这样做,最好切换到它。 C ++的<random>
库是far superior至<stdlib>
的rand()
函数,并允许您使用set the seed each time.您应将<random>
用于编写的任何生产代码。
除了rand()之外,是否有任何随机生成器库,哪个开发人员可以手动设置种子?
是。有许多个可用的随机数生成器(大多数是可种子的),它们都比rand()
好(这很糟糕)。请勿在生产代码中使用srand()
/ rand()
。
检查<random>
标头。
我建议将<random>
用于非加密目的(确保将其作为种子[,而不只是使用单个std::mt19937
进行播种),如果需要原始熵,请int
(一定要检查一下)如果您的实现实际上正确实现了,则该标准-错误的恕我直言-允许其使用PRNG)。远离std::random_device
,您不知道它将为您带来什么。