글
이번에는, 의사 난수 (랜덤 숫자, 정수 형태) 를 생성하는 예제를 설명드리겠습니다.
#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 함수 설명 참고)
'1.1) 실습' 카테고리의 다른 글
정수 배열에서 중복 값 (요소) 제거하기 (1) - O(n2) (5) | 2015.06.08 |
---|---|
1 초에 한 번씩 데이터 출력하기 (0) | 2015.06.08 |
프로그램 강제로 종료시키기 (0) | 2015.06.08 |
콘솔 화면 지우기 (6) | 2015.06.08 |
소리 및 음악 재생하기 (1) - WinApi (4) | 2015.05.25 |
배열 내용을 다른 배열에 한번에 복사하기 (1) | 2015.05.17 |
변수를 특정 값으로 초기화하기 (or 배열을 특정 값으로 한번에 초기화하기) (0) | 2015.05.17 |
현재 틱 카운트 (TickCount) 를 이용하여 시간 재기 (0) | 2015.05.17 |
화면 출력 (에코) 없이 키보드 입력 값 가져오기 (2) | 2015.05.17 |
비동기적으로 사용자 입력이 있는지 확인하기 (0) | 2015.05.05 |
RECENT COMMENT