【发布时间】:2012-11-07 02:52:49
【问题描述】:
所以,我正在制作一个 DLL,我想要一个函数来生成随机数。我想知道这些选项中哪个更有效(性能方面)。
这只是在 DLL 中创建一个函数,让我可以得到一个随机数。
int getRand(unsigned int seed) {
int rNum; // Random Number.
srand(seed);
rNum = (rand() % // Whatever I need here.
}
或者,在应用程序中仅使用srand(time(nullptr)) 和rand() 会提高性能吗?
谢谢,
约翰尼·P.
【问题讨论】:
-
每次在
rand()之前调用srand()是没有意义的。srand()用于种子随机数序列。一开始只使用一次。 -
在担心微优化之前,您可能会从学习 PRNG 工作原理中获益更多!或者,正如俗话所说,“让好代码变得更快比让快速代码变得更好更容易”。
-
@jogojapan 我为什么不呢?我以为每次我想要一个随机数时都必须播种,这样我就不会每次都得到相同的数字?
-
rand()每次都会更新随机数生成器的内部状态。所以你想再次获得相同的数字(或者当然有时只是通过同时发生)。
标签: c++ performance visual-c++ dll random