반응형
난수생성함수
랜덤한 수 즉 난수를 생성하기 위해서는 rand함수를 사용한다.
xxxxxxxxxx//rand()int main (){ for(int i = 0 ; i < SIZE ; i++){ printf("%d\n",rand()); } return 0;}xxxxxxxxxxOUTPUT1804289383846930886168169277717146369151957747793
이처럼 아무 연관없는 정수가 출력된다. 하지만 프로그램을 여러 번 실행해 보면 같은 값이 계속 나오는것을 확인할 수 있다. 매번 난수를 다르게 출력하는 데는 srand함수를 사용한다.
xxxxxxxxxx//rand(), srand()//time()int main (){ srand(time(NULL)); for(int i = 0 ; i < SIZE ; i++){ printf("%d\n",rand()); } return 0;}이렇게 하면 프로그램을 실행할 때 마다 다른값이 출력되는 것을 확인할 수 있다.
가끔 정렬을 확인하기 위해 임의의 배열을 만들어야 하는 경우가 있다. 이 떄 배열의 값으로 랜덤한 수를 넣어준다. 값이 중복되어도 문제가 되는 경우는 없지만 중복없이 배열을 채우는 법은 다음과 같다.
xxxxxxxxxx//rand(), srand();//time()//memset()void mkArr(int* arr, int size){ int cnt = 0; int test[size]; memset(test,0,size*4); srand(time(NULL)); while(cnt<size){ int num = rand()%size; if(test[num] == 0){ test[num] = 1; arr[cnt] = num; cnt++; } }}int main (){ int arr[SIZE]; mkArr(arr,SIZE); for(int i = 0; i<SIZE; i++){ printf("%d\n",arr[i]); } return 0;}xxxxxxxxxxOUTPUT24031반응형