-1

コードを実行すると:

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: 'gen' : redefinition; が生成されます。複数の初期化エラー。これを修正するにはどうすればよいですか? コードの一部だけを使用して 2 つの異なる数値を生成する必要がありますか? また、3 番目の変数の 1-10000000 を 1-20 に変更したい場合、どうすればよいでしょうか?

4

1 に答える 1

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

gen2回の初期化を行わないでください。一度だけやってください。異なる変数を使用してください - 異なる名前で、異なるものに使用してください。

aまた、グローバル変数、bcxyおよび を定義しないでくださいz。それらはまったく役に立たない。すべての変数をできるだけローカルに定義します。

于 2013-07-15T21:50:38.017 に答える