알고리즘
[C언어] Fisher-Yates Shuffle
tiobi
2021. 10. 12. 16:22
728x90
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_ARRAY_SIZE 500
void swap(int* a, int* b) {
int temp = *b;
*b = *a;
*a = temp;
}
int main() {
int i, j;
int ar[MAX_ARRAY_SIZE] = { NULL, };
//Array에 data 저장
for (i = 0; i < MAX_ARRAY_SIZE; i++)
ar[i] = i + 1;
//Fisher-Yates Shuffle
srand((unsigned)time(NULL));
for (i = 0; i < MAX_ARRAY_SIZE - 2; i++) {
j = rand() % MAX_ARRAY_SIZE;
swap(&ar[j], &ar[i]);
}
for (i = 0; i < MAX_ARRAY_SIZE; i++)
printf("%d ", ar[i]);
return 0;
}