1~46까지 정수 중 중복 없이 6개의 임의의 수를 출력하라.
5~10까지의 임의의 수를 발생시키는 방법은?
! 0~5까지의 임의의 수를 발생시킨 후 각각 5를 더한다.
rand()%6 + 5;
- for문의 break
break를 만나면 반복 조건은 무시하고 for문을 종료한다.
- 중복된 숫자 거르는 법
1. 숫자를 뽑는다.
2. 뽑은 숫자가 이전 숫자와 동일하면 다시 뽑는다.
i를 10번 뽑는다.
i를 뽑아본다.
j를 i번 뽑아본다.
만약 i번 i가 j번 i와 같다면 i를 감소시키고 다시 뽑는다.
초기화
srand(time(NULL));
/* Online C Compiler and Editor */ #include <stdio.h>
int main() {
int lotto[6]; int i; int j;
srand(time(NULL)); //기준이 되는 랜덤 시드를 지정해줌
for(i=0;i<6;i++){ lotto[i]=rand()%47; for(j=0;j<i;j++){ if(lotto[i]==lotto[j]){ i--; break; } } }
for(i=0;i<6;i++) { printf("%d\t",lotto[i]); }
return 0; } |