본문 바로가기
프로그래밍 언어/C 언어

[예제] srand()를 이용한 1~10까지의 난수 생성

by 까망 하르방 2021. 2. 23.
반응형

해당 게시글에서는 10개의  숫자를 랜덤하게 생성할 때, 1~10까지의 숫자 중 랜덤하게 가지는 방법과

1~10까지 숫자를 중복없이 랜덤하게 배치하는 방법을 소개합니다.

([C / C++] 난수 생성 (rand, srand, time) 보고 오시면 좋습니다.)

 

 

srand()와 rand()를 통해서 0 ~ 32767을 랜덤하게 추출할 수 있었습니다.

1~10까지의 숫자를 랜덤하게 추출하는 방법은 나머지 연산을 이용하는 것입니다.

rand() % MOD

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

const int SIZE = 10;
int idx, list[SIZE];

int main() {
       srand(time(NULL));
       while (idx < SIZE) {
              int val = rand() % SIZE;
              list[idx++] = val;
       }
       for (int i = 0; i < SIZE; ++i) {
              printf("%d\n", list[i] + 1);
       }
}

"% 10"을 통해서 0 ~ 9까지의 숫자를 랜덤하게 받을 수 있으므로

해당 수치 + 1을 하면 [1...10]까지의  숫자를 얻을 수 있습니다.

중복 여부를 확인하지 않기 때문에 중복된 숫자가 랜덤하게 나타날 수 있습니다.

(값을 굳이 list[]에 저장하지 않고 출력해도 무방합니다.)

 

1~10까지의 숫자가 이미 나왔는지 확인해야하므로 check[11] 변수를 이용합니다.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

const int SIZE = 10;
int idx, list[SIZE];

int main() {
       srand(time(NULL));
       while (idx < SIZE) {
              int val = rand() % SIZE;
              list[idx++] = val;
       }
       for (int i = 0; i < SIZE; ++i) {
              printf("%d\n", list[i] + 1);
       }
}

1~10까지의 숫자가 중복없이 랜덤하게 출력되는 것을 확인

 

 

 

반응형

댓글