3. 로또

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;

}