[C언어 소스] 로또 발생기
//로또
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
 
#define CNT 6
#define MAX_NUM
45
#define MAX_TRY   1000
 
#define SWAP(x,y)  {int tmp=x;
x=y; y = tmp;}
 
void make_randoms(int *base, int n)
{
    int i = 0;//반복문 수행
횟수
    int value=0;//랜덤 발생한
수
    int checks[MAX_NUM]={0};//발생한 수는 1, 발생하지 않은
수는 0
 
    for(i=0;i<n;i++)//n개를 발생
    {
        do
        {
            value
= rand()%45; //0~44의
랜덤한
수를
발생(발생한수가 h일
때
실제
값은 h+1로 처리할
것임)
 
        }while(checks[value]);//만약 checks[value]가
참이면이미
발생한
수이므로
다시
반복해야
함
        checks[value]
= 1; //value 값은
이미
발생하였음을
마킹
 
        base[i]
= value; //중복
체크를
하여
새로
발생한
값을
버퍼에
보관
    }
}
 
void sort(int *base,int n)
{
    int i = 0;
    int j = 0;
    int temp
=0;
 
    for(i=0;i<(n-1);i++)//마지막 원소
한
개가
남을
때까지(하나만있을 때
정렬이
필요없음)
    {
        for(j=i+1;j<n;j++)//j를 마지막
원소까지
순차적
증가
        {
            if(base[j-1]>
base[j])//앞에
값이
더
크면
            {
 
                SWAP(base[j-1],base[j]);   //교환
            }
        }
    }
}
 
int main(void)
{
    int base[CNT]={0};//랜덤한 수를
보관
    int i = 0;//반복문에서 반복
횟수를
기억할
변수
    int j = 0;//반복문에서 반복
횟수를
기억할
변수
    int value
=0; //반복문
내부에서
발생하게
랜덤한
값을
기억할
변수
    int scores[MAX_NUM]={0};//특정 값이
몇
번발생했는지
기억할
변수
    int mi=0;//최대 빈도수가
있는
인덱스
 
    srand((unsigned int) time(0));//랜덤의 씨앗값
설정(프로그램 동작할
때마다
다르게
발생하게
씨앗값
설정)
    for(i=0;i<MAX_TRY;i++)//1000회 시도
    {
        printf("%04dth try ",i+1);//시도
횟수
출력
        make_randoms(base,CNT); //랜덤한 수를 n개 제비뽑기
        sort(base,CNT); //정렬
        for(j=0;j<CNT;j++)//제비뽑기한 CNT개의
수만큼출력
        {
            value
= base[j]; //제비뽑기한
수
            printf("%02d ",value+1);//제비뽑기에서 0~44사이에 수를
발생하였기에 1을 더함(1~45)
            scores[value]++;//제비뽑기한 수의
발생
빈도를 1 증가
        }
        printf("\n");
    }
 
    for(i=0;i<CNT;i++)
    {
        mi=i;
        for(j=i+1;j<MAX_NUM;j++)
        {
            if(scores[mi]<scores[j])
            {
                mi
= j;
            }
        }
        base[i]=mi+1;
        scores[mi]=0;
    }
 
    printf("추천 번호:");
    for(i=0;i<CNT;i++)
    {
        printf("%d ",base[i]);
    }
    printf("\n");
}
'언어 자료구조 알고리즘 > C언어 예제' 카테고리의 다른 글
| 문자열에서 문자 제거, C언어 소스 (0) | 2016.04.03 | 
|---|---|
| abc+cca=1ab2, C언어 소스 (0) | 2016.04.03 | 
| 소수인지 판별, C언어 소스 (0) | 2016.04.03 | 
| 이차 방정식 해 구하기, C언어 소스 (2) | 2016.04.03 | 
| 균형 원소 찾기, C언어 소스 (0) | 2016.04.03 | 
| [C언어 소스] 디지털 시계 (0) | 2016.04.03 | 
| [C언어 소스] 학생 성적 관리 프로그램 - 이중 연결리스트 (0) | 2016.04.03 | 
| [C언어 소스] 성적 관리 프로그램 - 학생 데이터 동적 메모리 할당 (0) | 2016.04.03 | 
| [C언어 소스] 성적 관리 프로그램 - 동적 메모리 할당 (0) | 2016.04.03 | 
| [C언어 소스] 성적 관리 프로그램 - 전역 변수 사용 (0) | 2016.04.03 | 
로또 발생기.c