C 프로그래밍을 처음 배울때 주사기 프로그램 예제를 작성할 때 rand()를 이용하였다. 일반적으로 rand()는 난수를 발생하긴 하지만 생성되는 난수가 시스템에 따라 획일적으로 나오는 문제가 있어, key 값을 가진 srand()를 이용하여 키값을 이용하여 생성되는 난수를 좀더 랜덤하게 만들어주는 방법을 이용하게 된다.
특히 갑자기 사용하려하면 바로 기억이 나지 않는... 근데 딱히 검색해도 맘에 드는 게시물도 별로 없고.. 그래서 간단하게 쓸 수 있는 예제를 남긴다.
출처 : embeddedclub.net
1. 예제코드
// 난수생성 예제
// embeddedclub.net
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int random_value(int start, int end);
int main(int argc, char** argv)
{
int i;
int input1;
int input2;
if(argc!=3) {
printf("Illegal argument.\n");
return -1;
}
input1 = (atoi(argv[1]));
input2 = (atoi(argv[2]));
srand( (unsigned)time(NULL) );
for( i=1; i<=6; i++ ) {
printf(" Random [%d] : %d \n", i, random_value(input1, input2));
}
return 0;
}
int random_value(int start, int end)
{
int temp;
if(start>end) {
temp = start;
start = end;
end = temp;
}
return rand()%((end-start)+1)+start;
}
2. 실행결과
실행결과는 다음과 같다. 여러번 반복하더라도 출력되는 숫자가 중첩되는 경우가 높지 않다는 것을 확인할 수 있다.
입력되는 인자는 처음 시작값과 마지막 끝값이다.
독자 분들께서는 로또 난수 발생기 하나 만들어서 로또를 한번...
# 난수발생 예제... 끝.
반응형
최근댓글