2013-07-15 23 views
-1

当我运行我的代码:C++与生成随机数的多初始化错误

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); 

它产生“错误C2374:‘根’:重新定义;多个初始化'错误。我该如何解决?我是否只需要使用部分代码来生成2个不同的数字?另外,如果我想为第三个变量将1-10000000更改为1-20,那我该怎么做?

+1

不要重复前3行。你已经有了发电机,你只需要它的下一个数字 – Dave

回答

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

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

而且,不定义全局变量abcxyz。他们完全没用。尽可能在本地定义每个变量。