- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define MAX 100
- //基本思想:游标及其之后的data[cur..(MAX-1)]是选取之后剩下的数,从中选取一个data[((rand()%(MAX-cur))+ cur)]与游标位置处数字交换,游标后移重复操作
- void OutputRand()
- {
- int data[MAX];
- int pick = 0;
- int cur = 0;
- int temp = 0;
- srand(time(NULL));
- for (cur = 0; cur < MAX; cur++)
- {
- data[cur] = cur;
- }
- for (cur = 0; cur < MAX; cur++)
- {
- pick = rand() % (MAX - cur);
- // swap data[cur] with data[pick+cur]
- temp = data[pick+cur];
- data[pick+cur] = data[cur];
- data[cur] = temp;
- }
- for (cur = 0; cur < MAX; cur++)
- {
- printf("%d\\t", data[cur]);
- }
- }
- int main()
- {
- OutputRand();
- system("pause");
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/090120148466.html
来源: http://www.codesnippet.cn/detail/090120148466.html