[C/C++] 랜덤(random) 값의 발생과 초기화

Posted in 단체/ㄴ대학 전공 수업 by

1. VC++ 컴파일러 환경에서 랜덤 값을 발생시키기 위한 함수로 rand()를 제공한다.
   rand()함수는 0부터 RAND_MAX(32767로 정의)까지의 숫자 중에서 임의의 숫자를
   돌려준다.

2. RAND_MAX는 헤더 파일 <stdlib.h>에 아래와 같이 상수로 정의되어 있다.
            #define RAND_MAX 0x7FFF

3. rand() 함수를 초기화해주지 않으면 매번 실행할 때마다 똑같은 순서의 숫자들이
   생성된다. 따라서 rnad() 함수를 사용하기 전에 srand() 함수를 이용해서 초기화를
   해야 한다. srand() 함수는 seed로 임의의 정수를 지정할 수 있는데, time() 함수로
   시스템의 시간을 구한 후 이를 seed 값으로 사용하면 항상 seed가 달라지기
   때문에 일반적으로 아래와 같이 사용한다.
            seed = time(NULL);
            srand(seed);
            == srand(time(NULL)); 위의 2개를 이와 같이 써도 무방하다.

4. rand(), srand() 함수를 사용하기 위해서는 반드시 <stdlib.h> 파일을 헤더 파일로
   삽입해야 한다. 또한 time() 함수를 사용하기 위해서는 반드시 <time.h> 파일을
   헤더 파일로 삽입해야 한다.

5. 특정 범위의 랜덤 값을 발생시키기 위해서는 나머지 연산자와 덧셈을 이용한다.
  - 0부터 9까지의 숫자를 발생  : rand() % 10                     // 0~9
  - 1부터 10까지의 숫자를 발생 : (rand() % 10) + 1             // (0~9)+1 => 1~10
  - a부터 b까지의 숫자를 발생  : (rand() % (b-a+1)) + a     // (0~b-a)+a => a~b