C++生成随机数时出现多个初始化错误

C++ Multiple initialization error with generating random numbers

本文关键字:初始化 错误 随机数 C++      更新时间:2023-10-16

当我运行代码时:

int a;
int b;
int c;
int x;
int y;
int z;
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<int> dis(1, 10000000);
    int a = dis(gen);
    printf("%d", a);
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<int> dis(1, 10000000);
    int b = dis(gen);
    printf("%d", b);

它生成"error C2374:"gen":重新定义;多个初始化错误。我该如何解决这个问题?我必须只使用代码的一部分来生成两个不同的数字吗?此外,如果我想将第三个变量的1-10000000更改为1-20,我该怎么做?

std::mt19937 gen(rd());
...
std::mt19937 gen(rd());

不要对gen进行两次初始化。只做一次。使用不同的变量-使用不同的名称,用于不同的事物。

此外,不要定义全局变量abcxyz。它们完全没用。尽可能在本地定义每个变量。