C 如何在for循环中使用random_shuffle来实现不同的洗牌数组?
我想要10种不同的洗牌形式的数组…但是随机洗牌会产生10次相同的序列。。。 我的代码是C 如何在for循环中使用random_shuffle来实现不同的洗牌数组?,c,random,C,Random,我想要10种不同的洗牌形式的数组…但是随机洗牌会产生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++
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");
}
}
按任意键继续您每次都在重新初始化随机数生成器,因为您的代码足够快,可以在1秒内运行,所以每次都会得到相同的种子 移动
srand(时间(0))代码>循环外
在程序中只调用srand()一次,例如在main()的开头。您每次都在重新初始化随机数生成器,因为您的代码足够快,可以在1秒内运行,所以每次都会得到相同的种子
移动srand(时间(0))代码>循环外
在程序中只调用一次srand(),例如在main()的开头。在之前使用srand
,所以你真正的问题是:我如何实际生成随机数?你不需要或不想在循环中调用srand
,或者在程序中调用多次。在之前使用srand
,看,你真正的问题是:我实际上如何生成随机数?你不需要或不想在循环中使用
srand
,或者在程序中不止一次。谢谢……我发现了我的错误,这是一个愚蠢的逻辑错误。最后生成的序列存储在2d数组的每个索引中,这是我的错误。在外部for循环中调用randomsuffle为(;我感谢你……我发现了我的错误这是一个愚蠢的逻辑错误。最后生成的序列存储在2d数组的每个索引中,这是我的错误。在外部for循环中调用random shuffle可以得到正确的答案(;i
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