望大家帮忙求解c++洗牌问题

编写一个函数,对二维数组的全部元素实现随机打乱其位置(洗牌)。函数原型为: 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个位置的数据进行交换。使用循环进行多次,那么就是洗牌操作