❌이전글/이전글
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 페이지로 확인하자
rand() % 45 +1; 로또 번호는 총 1~ 45개 이므로 rand() % 45에서 +1을 해줬습니다. +1을 안해주면 0~ 44개의 난수가 발생합니다.
그리고 중복값을 체크해주기 위해서 for문과 if문을 for문안에 추가하여 중복체크를 해주었습니다.
출력결과
반응형