언어 자료구조 알고리즘/C11 표준 라이브러리 함수

rand 함수 [C언어 표준 라이브러리 함수 가이드]

언제나휴일 2016. 1. 3. 15:40
반응형

rand


헤더 파일

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - string.h


int rand(void); 랜덤 값을 발생
 
입력 매개 변수 리스트
없음
반환 값
랜덤 값
 
rand 함수는 0~RAND_MAX 사이의 값을 반환합니다.
rand 함수는 내부적으로  seed 값을 변경하면서 계산한 값을 반환합니다.
이러한 이유로 초기에 seed 값을 매 번 다르게 설정하기 위해 일반적으로 시간을 이용합니다.
만약 seed 값을 같은 값을 설정하면 랜덤 값을 생성하는 순서가 같아집니다.
 
사용 예
//C언어 표준 라이브러리 함수 사용법 가이드
//int rand (void); 랜덤 값을 발생
//서로 중복없이 1~45 사이에 랜덤 값 6개를 만들기
 
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
 
#define MAX_VALUE   45
#define MAX_TRY       6
 
int main(void)
{   
    int check[MAX_VALUE]={0};
    int cnt;
    int value;
 
    printf("RAND_MAX is %d \n",RAND_MAX);
 
    srand((unsigned)time(NULL));//랜덤 seed 값 설정
 
    for(cnt=0;cnt<MAX_TRY;cnt++)//MAX_TRY 번 반복
    {
        while(1)
        {
            value = rand()%MAX_VALUE; //0~MAX_VALUE 사이의 랜덤 값 발생
            if(check[value]==0)//발생한 적이 없으면
            {
                check[value] = 1;//발생하였음을 마킹
                printf("%d ",value+1);//발생한 값 +1 출력
                break;//while 반복문 탈출
            }
        }       
    }
    printf("\n");
 
    return 0;
}
 
출력 결과는 매 번 실행마다 다릅니다.
출력
RAND_MAX is 32767
32 3 33 45 25 37


반응형