在Windows上等同于/ dev/urandom?

mab*_*ham 11 windows prng

我的应用程序希望获得一个随机数,最好是熵(如果可用),但不需要加密质量,并且希望确保在系统熵池耗尽时调用不会阻塞(例如,在服务器场中) ).我知道CryptGenRandom(http://msdn.microsoft.com/en-us/library/windows/desktop/aa379942 (v=vs.85 ) .aspx),但它在不利熵条件下的阻塞行为是未标明.在Unix上,/ dev/urandom支持这个用例.Windows上是否有相同的功能?我宁愿避免使用非系统RNG来获得非阻塞语义.

ala*_*air 3

对于玩具应用程序,您可以使用标准库函数 rand(),但 Windows 上的实现质量非常差。对于加密安全的随机数,您可以使用rand_s()标准库函数。

更好的选择是在您的程序中包含一个合适的伪随机数生成器。在我看来, Mersenne Twister是一个不错的选择,特别是因为有大量可用的实现(包括在 C++11 标准库和 Boost 中)。