이번에는, 의사 난수 (랜덤 숫자, 정수 형태) 를 생성하는 예제를 설명드리겠습니다.


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char* argv[]){
	int randomNumber;
	srand((unsigned int)time(NULL));
	randomNumber = rand();
	printf("%d\n", randomNumber);
	randomNumber = rand() % 10;
	printf("%d\n", randomNumber);
	randomNumber = rand() % 9 + 1;
	printf("%d\n", randomNumber);
	return 0;
}


7 라인

srand 함수로 의사 난수를 생성하는 생성기에 대한 시작 시드 값을 설정합니다. (난수가 골고루 분포되어 생성되도록 섞어주는 역할을 합니다.) 이를 위해, time(NULL) 함수의 반환값인 현재 시각에 대한 초를 시드 값으로 넘겨주면, 실행할 때마다 초가 달라지기 때문에, 시드 값 또한 달라져서 난수가 중복되지 않게 생성되게 됩니다.


8 라인

rand 함수를 통해 0 부터 RAND_MAX (32767) 사이의 의사 난수 정수를 생성하여 반환합니다.


10 라인

rand 함수와 % 10 을 이용하여, 0 부터 9 까지의 의사 난수 정수를 생성하여 반환합니다. 즉, 의사 난수를 생성한 다음에 % 10 을 하기 때문에, 무조건 반환값이 10 보다 작게 됩니다.


12 라인

rand 함수의 반환값을 % 9 한 다음에, + 1 을 하면, 먼저, rand 함수의 반환값 % 9 의 결과, 0 부터 8 까지 범위 내에서 의사 난수 정수가 생성되고, 이 값에 1 을 더하면, 최종적으로 1 부터 9 까지의 의사 난수 정수가 생성되어 반환되게 됩니다. 


[실행 결과]




(srand 함수 설명 참고)

https://msdn.microsoft.com/ko-kr/library/f0d4wb4t.aspx


(time 함수 설명 참고)

https://msdn.microsoft.com/ko-kr/library/1f4c8f33.aspx


(rand 함수 설명 참고)

https://msdn.microsoft.com/ko-kr/library/398ax69y.aspx

by kkikkodev 2015. 5. 17. 23:53