2013-07-15 37 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。他們完全沒用。儘可能在本地定義每個變量。