만일 테스트 용도로 그 값들을 랜덤하게 생성해야 한다면, 시간에 따른 RAND함수로 도출하는 것은 절대적으로 리소스 낭비가 크다.
예를 들어, 1~10까지의 수로 이루어진 배열 [1,2,3,4,5,6,7,8,9,10]을 랜덤하게 뽑으려면 확률상 몇번의 RAND()를 불러야 할까?
따라서 랜덤으로 배열을 만드는 것 보다. 이미 만들어진 배열을 랜덤으로 섞는 것이 더 유리하다.
C++이나 Java와 같은 언어에서는 이미 이런 기능을 함수로 만들어 제공한다.
함수의 이름은 Shuffle이다.
만약 셔플 함수를 제공하지 않는 다면 아래와 같이섞을 수 있다.
void shuffle(int* arr, int size){
srand(time(null));
for(int i = size-1; i > 0; i--){
int j = rand() % (i+1);
swap(arr[i], arr[j]);
}
}
int arr[30];
for(int i = 0; i < 30; i++)
arr[i]= i+1;
shuffle(arr, 30);
'프로그래밍 > C, C++, Java, Python' 카테고리의 다른 글
[Python] 코드로 이미지에 문구 넣기 (0) | 2019.04.05 |
---|---|
[Python] Modbus CRC16 파이썬3 예제 코드 (0) | 2019.03.28 |
[C/C++] Simple Polygon의 Triangulation – OpenGL (0) | 2019.03.06 |
[VB] 윈도우에서 프로그램을 백그라운드로 실행하는 방법 (0) | 2019.03.06 |
[Java] Jsoup을 이용한 간단한 웹 크롤러 만들기 (0) | 2019.03.02 |