请教怎么将数组中元素顺序打乱

请问如何将数组中元素顺序打乱
我想做一个连连看.
比方说有一个数组含100个元素.
每过一关,我要将这100个元素的值打乱.请问要怎么实现.

我想的方法是生成0-99之间的100随机数作为数组的索引.然后
int i, j;
int rand[100]; 存放0--99之间的随机数
int temp;
int arr[100]; //用于保存图片.我需要将这个数组打乱
for(i=0; i<59; i++)
{
  temp = arr[rand[i]];
  arr[rand[i]] = arr[i];
  arr[i] = temp;
}

你们看这样做效果好吗?还有更好的方法没啊?

------解决方案--------------------
C/C++ code

#include <stdio.h>  
#include <stdlib.h>  
#include <time.h>  
 
// 随机打乱一个数组  

void random(int a[], int n)  
{  
   int index, tmp, i;  
   srand(time(NULL));  
   for (i = 0; i <n; i++)  
    {  
       index = rand() % (n - i) + i;  
       if (index != i)  
         {  
            tmp = a[i];  
            a[i] = a[index];  
            a[index] = tmp;  
         }  
    }  
 }  

int main()  
{  
   int a[] = {1, 2, 3, 4, 5};  
   int i;  
   random(a, 5);  
   for (i = 0; i < 5; i++)  
   printf("%d ", a[i]);  
   printf("\n");  
   system("pause");  
   return 0;  
}