编写一个函数,对二维数组的全部元素实现随机打乱其位置(洗牌)。函数原型为: void MatShuffle(intarr[],introw,intcol);
https://blog.csdn.net/m0_38082783/article/details/79579116 这上面有
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#define random(x) (rand()%x)
void MatShuffle(int intarr[],int introw,int intcol) //intarr[]数组,introw数组长度,intcol洗牌次数。
{
int s1,s2,z1,z2,i;
srand((int)time(0));
for(i=0;i<intcol;i++)
{
s1=random(introw);
s2=random(introw);
z1=intarr[s1];
z2=intarr[s2];
intarr[s2]=z1;
intarr[s1]=z2;
}
for(i=0;i<introw;i++)
printf("%d ",intarr[i]);
}
void main()
{ int i;
int intarr[8]={1,2,3,4,5,6,7,8}; //可以自己添加输入数组,然后改参数
for(i=0;i<8;i++)
printf("%d ",intarr[i]);
printf("\n");
MatShuffle(intarr,8,10);
}
虽然我不知道C++,但是我可以给你思路,使用random函数random出数组中2个index的位置,然后将这2个位置的数据进行交换。使用循环进行多次,那么就是洗牌操作