컴퓨터 이야기
[Tip] 간단한 Shuffle 알고리즘 코드.
CatchMeIfYouCan
2007. 3. 15. 15:33
#include <stdio.h> #define MAX_ARRAY 10 void generate_random(int *random_array, int size) { int i, random_number, temp_value; for( i = 0; i < size; i++ ) random_array[i] = i; for( i = size - 1; i > 0; i-- ) { random_number = (rand() + rand()) % i; // swap temp_value = random_array[i]; random_array[i] = random_array[random_number]; random_array[random_number] = temp_value; } } int main(void) { int i, random_value[MAX_ARRAY]; generate_random(&random_value[0], MAX_ARRAY); for( i = 0; i < MAX_ARRAY; i++ ) printf("%d\n", random_value[i]); return 0; }
학교다닐 때 과제를 하다보면 이러한 서플 알고리즘을 사용해야될 경우가 많다.
보통...똑같은 숫자가 안나올때까지 확인하면서..
하나 생성하고 지금까지 만들어진 값과 loop 돌면서 비교해서 있으면 버리고.-_-;
최악의 알고리즘으로-_-;;; 하진 않았던가?ㅡ.ㅡ;
물론-_-................
난 옛날에 그렇게 햇기 때문에-_-이런걸 홈피에 올리는거지만..ㅡㅜㅋㅋㅋㅋ
(조교들고 그렇게 가르쳐줬었고-_-;; 나도 그렇게 가르쳤다;;)
------------------------------------------------------------------------------
이 코드는 KLDP에서 글을 보다-0-
저장시켜놨던거...
출처 : http://kldp.org/node/78905
뭐..코드는 따로 설명할 필요없이. 보면 OK?