❌이전글/이전글

CentOS - c언어로 로또 번호를 생성해요

당근은싫지만먹어야함 2019. 9. 13. 01:48
반응형

로또번호 생성 코드 ↓

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

 

rand, srand함수는 랜덤한 수를 만들기 위해 사용합니다. 

rand()함수는 0과 RAND_MAX사이의 유사난수 정수를 리턴합니다.

srand()함수는 인자를 rand()함수가 반환하는 유사난수 정수의 새로운 값들을 위한 시드로 설정하고 이 값들은 같은 시드 값으로 srand()함수를 호출하여 반복합니다.

 

시드값으로 현재 시간을 넣어 난수를 생성합니다.  time()함수에서 반환되는 값을 srand()함수의 인자로 주면 랜덤한 값을 얻을 수 있습니다.

타임함수는 시간을 초 단위로 계산하여 1970년 1월 1일 0시0분0초 이후의 시간을 리턴해줍니다. 

 

rand, srand함수는 사용하기 위해서는 stdlib.h 헤더파일을 추가하고, time함수를 사용하기 위해서는 time.h헤더파일을 코드에 추가하여야합니다.

 

vi에디터에서 커서를 함수에 대고 shift + k를 눌러서 확인해보자, 사용법이 나온다!  아니면 man 페이지로 확인하자

 

  

vi editor 안에서 커서를 글자에 대고 shift + k를 눌러보자

 

rand() % 45 +1; 로또 번호는 총 1~ 45개 이므로 rand() % 45에서  +1을 해줬습니다. +1을 안해주면 0~ 44개의 난수가 발생합니다.

 

 

그리고 중복값을 체크해주기 위해서 for문과 if문을 for문안에 추가하여 중복체크를 해주었습니다.

 

 


 

출력결과

 

반응형