#include <iostream>
#include <random>
int gen_ran(void)
{
static std::random_device rd;
static std::mt19937 gen(rd());
static std::uniform_int_distribution<int> dist(0, 9);
return dist(gen);
}
int main()
{
for (int i = 0; i < 50; i++)
{
std::cout << gen_ran() << " ";
if ((i + 1) % 10 == 0)
std::cout << std::endl;
}
}
我不太明白为什么我们可以在 gen_ran() 函数的三行中的每一行中放置一个静态。我google了很多,但似乎没有明确的答案。
我的理解是通过使用静态,我们只初始化对象一次,但每个类(random_device、mt19937、uniform_int_distribution)中的算法仍然可以生成随机数。那么static在函数被多次调用时可以节省一些计算机资源吗?
如果我不使用任何静态或在代码中使用一两个如何。如果我在每种情况下都不这样做有什么区别吗?非常感谢。