请教怎么将数组中元素顺序打乱
请问如何将数组中元素顺序打乱
我想做一个连连看.
比方说有一个数组含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;
}
你们看这样做效果好吗?还有更好的方法没啊?
------解决方案--------------------
我想做一个连连看.
比方说有一个数组含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; }