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() 一次,例如在 main() 的开头。

于 2013-06-13T14:11:06.973 回答