除了rand()以外,是否有任何随机生成器库,开发人员可以手动设置种子?

问题描述 投票:-1回答:2

我想验证如果种子相同,则生成的伪随机数相同。使用rand()是最简单的方法,但我正在寻找更安全的方法。我发现在Linux的/ dev / random中使用设备熵非常可靠,但是找不到如何设置完全相同的种子。我也尝试了窗口的cryptgenrandom,但是找不到设置种子的方法。我可以使用那些使用设备的随机生成器手动生成种子吗?还是还有其他可以设置手动种子的随机生成器库?

c++ c linux random random-seed
2个回答
1
投票

是,<random>允许这样做,最好切换到它。 C ++的<random>库是far superior<stdlib>rand()函数,并允许您使用set the seed each time.您应将<random>用于编写的任何生产代码。


-1
投票

除了rand()之外,是否有任何随机生成器库,哪个开发人员可以手动设置种子?

是。有许多个可用的随机数生成器(大多数是可种子的),它们都比rand()好(这很糟糕)。请勿在生产代码中使用srand() / rand()

检查<random>标头。

我建议将<random>用于非加密目的(确保将其作为种子[,而不只是使用单个std::mt19937进行播种),如果需要原始熵,请int(一定要检查一下)如果您的实现实际上正确实现了,则该标准-错误的恕我直言-允许其使用PRNG)。远离std::random_device,您不知道它将为您带来什么。

© www.soinside.com 2019 - 2024. All rights reserved.