5

srand()/rand()在 3rd 方库中有广泛使用的调用,带有预定义的种子。在同一进程中组合不同的库时会出现问题。有时很难确保正确的调用顺序,混合srand()调用rand()是可能的。另一个问题是无法在应用程序级别选择种子值。作为一般规则,我们是否应该避免srand()在库(包括开源)中使用,将播种任务留给应用程序?

4

2 回答 2

1

boost::random由于您提到的原因,除其他外,在实际应用程序中使用C++11random库是更好的做法

于 2013-02-14T20:15:15.247 回答
0

如果图书馆使用硬编码的种子,那么是的,您应该有办法将这些种子更改为您声明为“足够随机”的种子。

此外,如果您使用的平台具有 /dev/urand 之类的东西,您可能可以使用它,或者如果您必须是多平台的,为什么不使用 OpenSSL 的随机数库之类的东西呢?OpenSSL 应该可以在您所针对的每个平台上使用,并且通常它已经安装,因此您只需要链接它。

于 2013-02-14T20:07:46.257 回答