0

10 種類のシャッフル形式の配列が必要ですが、random_shuffle は 10 回同じシーケンスを生成します...そして私のコードは...

for(k=0;k<10;k++) {
    for (l=0; l<SIZE;l++)
        a[l]=l+1;

    srand(time(0));
    random_shuffle(a,a+SIZE);  //getting the  shuffled sequence

    for(;i<10;i++) {
        for(j=0;j<5;j++) {
            rcusseq[i][j]=a[m++]; //storing the sequence in a 2d array
            printf("%d\t",rcusseq[i][j]);
        }
        m=0;
        printf("\n");
    }
}

出力

    5       4       2       1       3
    5       4       2       1       3
    5       4       2       1       3
    5       4       2       1       3
    5       4       2       1       3
    5       4       2       1       3
    5       4       2       1       3
    5       4       2       1       3
    5       4       2       1       3
    5       4       2       1       3

何かキーを押すと続行します

4

1 に答える 1

3

コードは 1 秒以内に実行できるほど高速であるため、毎回乱数ジェネレーターを再初期化しています。毎回同じシードを取得します。

srand(time(0));ループの外に移動します。

srand() は、プログラム内で 1 回だけ呼び出してください。たとえば、main() の開始時などです。

于 2013-06-13T14:11:06.973 に答える