小编Eth*_*han的帖子

C++ 中的静态和随机生成器

#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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不太明白为什么我们可以在 gen_ran() 函数的三行中的每一行中放置一个 static 。我用谷歌搜索了很多,但似乎没有明确的答案。

我的理解是,通过使用静态,我们只初始化对象一次,但每个类中的算法(random_device、mt19937、uniform_int_distribution)仍然可以生成随机数。那么static在函数被多次调用的时候可以节省一些计算机资源吗?

如果我不使用任何静态或在代码中使用一两个静态怎么样?如果我在每种情况下都不这么做,会有什么区别吗?非常感谢。

c++ random static mt19937

1
推荐指数
1
解决办法
1389
查看次数

标签 统计

c++ ×1

mt19937 ×1

random ×1

static ×1