반응형
해당 게시글에서는 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까지의 숫자가 중복없이 랜덤하게 출력되는 것을 확인
반응형
'프로그래밍 언어 > C 언어' 카테고리의 다른 글
[C] 중첩 for문 (한번에) 빠져나오기 (0) | 2021.03.19 |
---|---|
[C] [전처리기] 헤더파일(.h) 만들어서 include 하기 (2) | 2021.03.06 |
[C] #include "헤더파일" & #include <헤더파일> (0) | 2021.03.06 |
[C] [전처리기] 매크로와 선행처리기 (0) | 2021.03.03 |
[C / C++] 난수 생성 (rand, srand, time) (0) | 2021.02.23 |
댓글