[c언어] 로또 당첨번호 생성. 1부터 45사이의 정수 난수를 출력(rand, srand)

|



로또 당첨번호를 생성하기 위해 1부터 45사이의 난수 6개를 함수(rand)를 이용하여 출력

// 1부터 45사이의 정수 난수를 출력

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int i;
    for(i=1;i<=6;i++)
        printf("%d\n", rand()%45+1);
    return 0;
}

// 실행 결과





// 위의 프로그램을 두번 실행해 결과를 보면 첫번째와 두번째 실행결과가 같다.
    실행할 때마다 같은 난수가 아닌 서로다른 난수를 생성하기 위해서는 새로운 라이브러리 함수를 추가해야 한다.

// 난수 초기화를 이용하여 서로 다른 난수를 생성

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
    int i;
    srand(time(NULL));
    for(i=1;i<=6;i++)
        printf("%d\n", rand()%45+1);
    return 0;
}

// 실행 결과




// rand()를 이용하여 생성한 난수는 해당범위내의 숫자들에 대해서 나타날 확률이 모두 같기 때문에 한번의 실행에서
    중복되는 난수가 발생할 수 있다.

// 난수를 중복되지 않게 생성하는 방법
    로또 당첨번호 생성 프로그램

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
    int i, r, j, random[7];
    srand(time(NULL));
    for(i=0;i<=6;i++)
    {
        again:;
        r=rand()%45+1;
        for(j=0;j<=i-1;j++)
            if(r==random[j])
                goto again;
        random[i]=r;
    }
    for(i=0;i<=6;i++)
        printf("%d\n", random[i]);
    printf("\n");
    return 0;
}

// 실행 결과


  ::