본문 바로가기

프로그래밍/C언어

[C언어] rand, srand 함수

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


◎ rand 함수

- rand 함수는 난수를 발생시키는 함수이다. 범위는 0~32767.


 rand 함수의 활용

 #include <stdlib.h>       // 해당 파일을 포함시켜 줘야 rand 함수를 사용할 수 있다.


 int main()

 {

      int nNum = 1;       // 번호 출력용


      for(int nCount = 0; nCount < 3; ++nCount)

      {

           int nRandom = rand();                               // 난수를 생성

           printf("[%d] %d\n", nNum, nRandom);

           nNum++;

      }

      return 0;

 }

 결과값

  



rand 함수는 0~32767의 난수를 생성한다.

출력되는 난수의 범위를 지정하고 싶으면 rand() % 100 이런 식으로 범위를 정할 수 있다.


 rand 함수 범위 지정

 #include <stdlib.h>

 

 int main()

 {

      int nNum = 1;

      for(int nCount = 0; nCount < 3; ++nCount)

      {

           // 생성된 난수를 100으로 나눈 나머지 값을 구한다.

           int nRandom = rand() % 100;

           printf("[%d] %d\n", nNum, nRandom);

           nNum++;

      }

 }

 결과값

  



% 100을 추가해 주고나서는 0~99까지의 난수가 출력된다.

이제 실행될때마다 다른 수가 생성될꺼라 생각했지만.... rand 함수만 사용해서는 프로그램 실행때마다 다른 수를 생성할 수 없다.


 


3번의 실행결과.

이때 필요한 함수가 바로 srand 함수.


◎ srand 함수

- 초기값을 지정하여 rand함수의 난수를 매번 다르게 생성해주는 함수이다.

- 초기값이 같으면 srand함수를 사용해도 매번 같은 값이 생성되게 때문에 time() 함수를 넣어 사용한다.


 srand 함수의 활용

 #include <stdio.h>

 #include <stdlib.h>

 #include <time.h>  // time함수를 사용하기 위해서 선언


 int main()

 {

      int nNum = 1;

      // 항상 다른 seed값을 넣어주기 위해 time함수를 인자로 넣어준다.

      srand((unsigned int)time(NULL));


      for(int nCount = 0; nCount < 3; ++nCount)

      {

           int nRandom = rand() % 100;

           printf("[%d] %d\n", nNum, nRandom);

           nNum++;

      }

      return 0;

 }

 결과값

   



매번 다른 seed값이 적용되면서 실행시마다 다른 난수값이 생성된다.