pandora广州专柜地址:关于随机化的问题

来源:百度文库 编辑:高校问答 时间:2024/05/02 00:08:30
比如有一个数组a[5]={1,2,3,4,5};
现在我想对它操作,使他的五个值还是1,2,3,4,5,
但他们在数组中的位置改变,比如可能变为a[5]={2,3,4,1,5};
不知道可不可以用随机化数组来做.
请用C来写.谢谢!!

可以的,基本思路是产生两个不同的随机数,然后交换数组中下标为这两个随机数的位置.
#include <stdlib.h>
#include <time.h>
void resort(int *a, int len)
{
int i,j,t;
srand(time(0));
i = rand()%len;
do
{
j = rand()%len;
}while(i==j);
t = a[i];
a[i] = a[j];
a[j] = t;
}
main()
{
int a[5]={1,2,3,4,5}
resort(a, 5);
return 0;
}