简单的乱序算法简单的乱许算法,思想是从n到1迭代,每次迭代随机从0到n-1中抽一个数与当前数字交换,最后得到的序列就是乱序的。该算法可以用于洗牌等地方。函数和测试程序如下: #include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX 52 #define swap(a, b) (a) ^= (b);(b) ^= (a);(a) ^= (b); int* shuffle(const int *arr, int size) { int i, idx; int *p = (int*)arr; srand((unsigned int)time(0)); for (i = size - 1; i > 0; i--) { idx = rand() % i; swap(*(p + idx), *(p + i)); } return p; } int main(int argc, const char *argv[]) { int arr[MAX]; int i; for (i = 0; i < MAX; i++) *(arr + i) = i; shuffle(arr, MAX); for (i = 0; i < MAX; i++) printf("%d ", *(arr + i)); printf("/n"); return 0; } 版权声明:本文为CherylNatsu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/CherylNatsu/article/details/6550259