※ 로또 프로그램 요약
얼마 전 C++11 문법을 이용한 로또 프로그램을 올렸는데, 그 때 올린건 이전에 만든 C 스타일과의 비교를 위해 class를 이용하지 않았었다. 이번에 만든 건 class를 이용하여 만든 버전이다. 더불어 Sunny Holic님이 언급하신 std::shuffle 방식과 random 방식의 속도 비교도 해보았다.

※ 로또 프로그램 특징
- 이전에 만들었던 것과 다르게 class를 이용하여 제작하였다.
- random 방식과 std::shuffle 방식을 이용하여 번호를 생성하며, 두 방법의 속도를 비교 하였다.

아래는 예제 소스코드다, 소스코드는 첨부해뒀으니 Visual Studio 2013 이상이라면 바로 컴파일해 볼 수 있다.
- header file


main.cpp


아래는 속도를 비교한 것이다, 속도는 random 방식이 빠르지만 구현은 shuffle 방식이 더 간단하다는 장점이 있다.

또 random 방식은 다른 곳에 응용(더 많은 수를 중복 없이 생성하는 곳)해도 빠른 속도를 보장 받을 수 있다는 장점이 있다.



※ 로또 프로그램 요약
C++11 문법을 이용하여 제작한 간단한 로또 프로그램이다.

전에 C언어로 제작한 로또 프로그램을 C++11 문법으로 리팩토링 하였다.

알고리즘 및 큰 흐름은 거의 같고 문법만 C에서 C++11로 바꿨으니 둘을 비교하면서 보면 좋을 것이다.


※ 로또 프로그램 특징
- C++11에 추가된 새로운 random(Mersenne Twister)을 이용하여 속도가 빠르고 품질이 좋다.

- 중복 판별을 위한 인덱스를 따로 관리하여 요소 개수가 많더라도 중복 판별에 상수 시간 복잡도를 갖을 수 있어 매우 빠르다.

- 표준 문법으로만 작성하여 윈도우, 리눅스 모두 컴파일 가능하다. (단 VS2013(12.0) 이상, gcc 4.8 이상)

 

#include <iostream>	//std::cout
#include <random>		//std::mt19937_64
#include <array>		//std::array
#include <algorithm>	//std::sort
#include <functional>	//std::greater

#define _NUMBER_MAX 6
#define _LOTTTO_MAX 45

int GetNumber( const int nMin, const int nMax );
std::ostream& operator<<( std::ostream& ostr, const std::array<int, _NUMBER_MAX>& arr );

int main( )
{
	//변수 선언
	std::array<int, _NUMBER_MAX> nNumber = { 0, };	//생성된 번호가 담길 배열
	std::array<bool, _LOTTTO_MAX> bIndex = { false, };	//빠른 중복 판단을 위한 배열 

	//번호 생성
	for( unsigned int i=0 ; i<nNumber.size() ; )
	{
		const auto nTempNum = GetNumber( 1, _LOTTTO_MAX );	//랜덤으로 번호 생성

		if( bIndex[nTempNum-1] == false )			//생성된 번호와 인덱스를 비교
		{
			bIndex[nTempNum-1] = true;			//생성된 번호와 인덱스 값 변경
			nNumber[i++] = nTempNum;			//생성된 번호 삽입
		}
	}

	//정렬, 주석을 지우면 내림차순 정렬한다.
	std::sort( nNumber.begin(), nNumber.end()/*, std::greater<int>( )*/ );
	
	//출력
	std::cout<<nNumber;

	return 0;
}

int GetNumber( const int nMin, const int nMax )
{
	std::random_device rn;		//시드 값
	std::mt19937_64 rnd( rn() );	//random_device를 시드 값으로 하여 초기화

	//랜덤의 범위를 지정
	std::uniform_int_distribution<int> nDist( nMin, nMax );
	
	return nDist( rnd );
}

std::ostream& operator<<( std::ostream& ostr, const std::array<int, _NUMBER_MAX>& arr )
{
    for( auto &i : arr )
    {
        ostr<<" "<<i;
    }

    return ostr;
}

 

 


※설명

아래는 C언어로 만든 로또 번호 생성 예제이자 중복 없는 난수 생성 예제다. 

본인이 배포하는 로또 프로그램에서 일부 가져와 군더더기를 제거하고 예제에 맞게 수정했다.

중복을 방지하기 위해 생성 여부에 대한 일종의 인덱스를 둬서 따로 검사하지 않아도 중복을 방지할 수 있게 했다.

흔히 사용하는 배열 요소를 처음부터 끝까지 조사 방식은 배열 개수에 따라 속도가 엄청 느려지므로 추천하지 않으며

이렇게 인덱스를 두는 방법은 에라토스테네스의 체를 구할 때도 이용되고

데이터를 캐싱할 때 이미 불러들인 데이터인지 판별할 때도 사용된다.

C++로 구현한 로또 프로그램도 있으니 비교해보니 바란다.



※예제

#include <stdio.h>
#include <stdlib.h>		//srand
#include <time.h>	    //time

//#define _MAX 6
const int nMAX = 6;

void BubbleSort( int *nArr, int nArrSize );

int main( )
{
	//변수 생성 및 초기화 부분
	srand( (unsigned)time(NULL) );				//srand로 초기화

	int nLottoNum[nMAX] = { 0, };				//생성된 로또 번호를 저장할 변수
	bool bCheckExistOfNum[45] = { false, };		//생성된 번호가 중복인지 체크할 변수(인덱스)

	//번호 생성 부분
	for( int i=0 ; i<nMAX ; )				    //번호가 6개 생성될 때까지 돈다.
	{
		int nTemp = rand()%45;					//0~44 범위의 번호를 생성한다.

		if( bCheckExistOfNum[nTemp] == false )	//중복 여부 판단
		{
			bCheckExistOfNum[nTemp] = true;		//번호가 중복 생성되지 않게 존재 여부를 true로 한다.
			nLottoNum[i] = nTemp+1;				//+1을 안해주면 범위가 0~44이다.
			++i;								//증감 연산을 for문에서 하지 않고 여기서 한다.
		}
	}

	//버블 정렬
	BubbleSort( nLottoNum, sizeof(nLottoNum)/sizeof(int) );

	//출력 부분
	for( int i=0 ; i<nMAX ; ++i )
	{
		printf( "%2d ", nLottoNum[i] );
	}

	return 0;
}

void BubbleSort( int *nArr, int nArrSize )
{
	for( int i=0 ; i<nArrSize-1 ; i++ )
	{
		for( int j=0 ; j<nArrSize-(i+1) ; j++ )
		{
			if( nArr[j] > nArr[j+1] )	//꺽쇠 방향으로 오름 차순, 내름 차순 결정
			{//값 교환 부분
				int temp = nArr[j];
				nArr[j] = nArr[j+1];
				nArr[j+1] = temp;
			}
		}
	}
}



오뇽 로또 프로그램에 대한 사용 방법 설명입니다.


프로그램 설명에 앞서 간단히 나눔 로또에 대해 간단히 알아보자면, 45개 번호 중 6개를 고르는 시스템이며 1등은 전체 경우의 수 중에 단 하나의 조합만 존재합니다. 고로 나눔 로또의 당첨 확률은 45C6 = (45x44x43x42x41x40)/(6x5x4x3x2x1) = 8,145,060 입니다. 중복되지 않는 조합으로 8,145,060장의 로또를 사면 8145060x1000원 = 81억 4506만원 이네요. 575회 로또 기준 당첨자는 8명이고 각 16억 9926만 7천원을 받았으므로 81억을 들여 모든 경우의 수 만큼 로또를 사도 크게 적자입니다.


※용어 설명

- 설명을 위해 쓰인 번호 2, 8, 20, 30, 33, 34는 575회 로또 당첨 번호임 -


총합 : 6개의 번호를 모두 더한 합, 2, 8, 20, 30, 33, 34의 합은 127

저고율 : 1~22를 낮은수(저), 23~45를 고(높은수)라고 하며 575회의 저고 비율은 3:3

홀짝율 : 6개의 번호 중 홀수 개수와 짝수 개수의 비율, 575회의 경우 1:5

연번 : 연속되어 있는 번호의 쌍, 575회의 경우 33, 34 1쌍만이 연속되므로 연번은 1쌍

첫수합 : 일의 자리는 빼고 십의 자리 숫자만 더해서 나누기 10 한 수, 2, 8, 20, 30, 33, 34 = (20 + 30 + 30 + 30)/10 = 11

끝수합 : 십의 자리는 빼고 일의 자리 숫자만 더한 수, 2, 8, 20, 30, 33, 34 = 17

고저합 : 번호1과 번호6의 합 - 2, 8, 20, 30, 33, 34 = 2 + 34 = 36

간격합 : 각 번호들의 차를 더한게 간격합, 혹은 번호6 - 번호1이 간격합 - 2, 8, 20, 30, 33, 34 = 34 - 2 = 32

123합 : 번호1 + 번호2 + 번호3을 더한 값

456합 : 번호4 + 번호5 + 번호6을 더한 값

고정수 : 사용자가 번호를 생성할 때 반드시 포함시킬 수

제외수 : 사용자가 번호를 생성할 때 반드시 제외시킬 수


※프로그램 설명 1/3 - 대략적인 설명

1. 검색탭

전 회차 로또 당첨 번호들을 확인할 수 있는 탭입니다. 최신 당첨 번호는 매주 토요일 20시 50분 이후에 자동으로 업데이트 됩니다. 아래 보면 검색 조건이라는 항목이 있는데, 검색조건을 통해 원하는 범위의 데이터만 조회할 수도 있습니다.



2. 생성탭

로또 번호를 생성하는 탭입니다. 원하는 조건을 줘서 생성하거나 완전 자동으로 번호를 생성해 줍니다. 생성한 번호는 파일(txt, 엑셀) 저장하거나 불러올 수 있습니다.



3. 집계탭

프로그램 자체적으로 집계를 내는 집계탭입니다. 사실 "통계"라고 이름 짓고 싶었는데 로또 통계와 겹쳐 그냥 집계로 했습니다. 여기서는 다른 사람들의 패턴을 대충 볼 수 있습니다.



4. 통계창

통계1탭, 통계2탭, 통계3탭을 담고 있는 통계창입니다. 이곳에서는 전 회차 당첨 번호들을 토대로 통계를 내는 창입니다. 지난 1회부터 575회까지 가장 많이 당첨된 번호라든가, 지난 15회 동안 안나온 번호 등을 확인할 수 있습니다.



프로그램 설명 2/3 - 검색탭 세부 사항

1. 조건 검색

아래 그림은 검색 조건 중 "총합 범위", "홀짝 비율", "연번 개수", "추첨일"의  조건을 줘서 검색한 결과입니다. 조건처럼 총합은 80~150 사이가, 홀짝 비율은 3:3과 4:2 등의 검색 결과가 나왔습니다.


2. 반전 검색

반전 검색이랑 조건에 반대되는 조건을 검색하는 기능입니다.아래 그림처럼 총합 범위를 70~220으로 주고 "반전 검색" 버튼을 누르면 총합이 70~220가 아닌 값들만 조회됩니다. 검색 결과는 아래처럼 64나 48, 69, 238 등, 70~220사이가 아닌 회차들이 검색되었습니다.



3. 파일 출력 및 복사

원하는 회차만 엑셀로 출력하거나 복사하는 방법에 대한 설명입니다. 원하는 행들을 선택하고, 선택한 행 중에서 마우스 오른쪽 클릭을 하면 아래와 같이 팝업 메뉴가 뜹니다. 엑셀로 출력하려면 "선택한 항목 엑셀 파일로 저장"을 선택합니다. 복사하려면 "선택 항목 복사"를 누르거나 Ctrl+C 누르면 복사가 됩니다. 복사한 것들은 메모장이나 엑셀에 Ctrl+V로 붙여넣기 하시면 됩니다.


※프로그램 설명 3/3 - 생성탭 세부 사항

1. 조건 생성

조건을 줘서 번호를 생성하는 방법입니다. 주로 통계창의 통계탭들을 보면서 번호를 생성합니다. 아래는 간단한 예로 "저고 비율", "홀짝 비율", "연번 개수"만 조건을 주고 생성한 결과 화면 입니다. 조건처럼 저고율 3:3, 홀짝율 3:3, 연번 3쌍이 나왔습니다. 아무 조건 없이 생성할 경우 완전 자동모드입니다. 귀차니즘 때문에, 혹은 운에 맡겨보고 싶은 사람들이 자주 사용합니다.



2. 임의 번호 입력

이번에는 자신이 번호를 직접 입력하는 임의 번호 입력에 대한 내용입니다. 임시 입력 공간은 3개가 있고, "입력" 버튼을 누르면 누른 순서대로 리스트에 추가됩니다. 번호가 입력되고 나면 총합이라든가 저고율 등이 자동으로 계산되어 입력됩니다.



3. 고정수/제외수 설정

고정수는 번호 생성시 꼭 포함되어야할 번호이고 제외수는 번호 생성시 꼭 제외되어야할 번호입니다. 아래 그림은 고정수 1, 45를, 제외수는 40, 41, 42, 43, 44로 설정하여 100개의 번호를 뽑은 창입니다. 고정수로 설정한 1, 45는 리스트에 무조건 들어가 있고 반대로 제외수로 설정한 40~44는 무조건 제외되서 생성됐습니다.



4. 중복 관련

좁은 조건 범위 내에서 번호들을 생성하다 보면 중복된 번호들이 생길 수 있습니다. 중복된 번호들이 있을때 중복된 횟수는 몇 번인지, 어떤 수들이 중복 되었는지 확인할 수 있습니다. "중복 항목 삭제"버튼을 누르면 중복된 항목들은 하나만 남기고 제거가 됩니다.


아래는 제 모니터 화면 캡쳐입니다.

프로그램 테스트 하는 중인데 올릴거라 과도하게 띄운 감이 있네요 - _-ㅋ

프로그램 테스트 할 때는 2~3개 띄워놓고 합니다.

 
OignonLotto 5.8.1.zip
2.26MB

 

프로그램의 목적은 로또 1등을 위한 프로그램이 아니라

사용자가 로또할 때 조금 더 편하게 이용하라고 만든 프로그램입니다

 

예를 들면 내가 집이 필요해서 집을 지어야 하는데,

집을 지어 주는게 아니라 집을 편하게 짓는데 필요한 도구의 개념입니다.

 

참고로 저는 로또 거의 안하고, 사도 자동으로 삽니다 헤헤

 

 

프로그램 사용 방법 설명 링크

 

 

개발 환경

Windows 10 x64

Visual Studio 2010 SP1

유니코드

 

언어

C++

 

라이브러리

MFC

MySQL

MS Office

curl

rapidjson

 

실행 환경 테스트

XP x86

7 x64

8 x64

10 x64

 

인터넷 서핑하다 우연히 로또 프로그램 보고 재밌을거 같아 공부할겸 만든 로또 프로그램입니다. 로또 전 회차 당첨번호 조회 및 무작위 번호 생성, 조건 번호 생성, 간단한 통계 기능이 있습니다. 또한 프로그램 자체 통계도 있어서 자신 이외의 다른 사용자들이 자주 사용하는 기능이나 자주 사용하는 시간대, 자주 사용하는 요일 등을 알 수 있습니다. 문의 사항이나 궁금한 사항, 요구사항 등은 댓글로 남겨주세요.

 


 

 

 

 

 

 

 

 

#Version History

16.05.02. ver 5.7.6

-curl 라이브러리 추가

-rapidjson 라이브러리 추가

 

16.04.19. ver 5.7.0

-cafe24 가상 서버로 서버 변경

-안전성 대폭 향상

 

-전체적인 속도 향상(번호 생성시 최고 40%)

 

16.01.22. ver 5.6.2

-XP 지원

 

16.01.12. ver 5.6.1

-실행 속도 개선

 

16.01.11. ver 5.6.0

-채팅 기능 추가

-다음 버전을 위한 코드 추가

 

16.01.09. ver 5.5.3

-통계1탭 내 그래프 위치 변경

-각 통계1, 통계2, 통계3탭 헤더들에 코멘트 추가

-기타 최적화

 

16.01.07. ver 5.5.0

-XP 지원 중단

-광고 제거

-메모리 최적화 (구버전 20MB 이상 5.5.0버전 10MB 미만)

-집계탭에서 각 종 수치 제거

-기타 최적화

 

14.05.08. ver 5.3.0

-MySQL DLL 버전 변경( 5.6.10.0 -> 6.1.3.0 )

-각 종 정적 라이브러리 버전업

-URL 연결 변경

 

14.02.23. ver 5.1.0

-URL 연결 변경

-몇몇 그래프 색상 변경

-기타 수정

 

14.02.23. 서버 변경 이력

※하드웨어 변경 사항

-SSD+HDD -> SSD+SSD

 

※OS 및 소프트웨어 변경 사항

-리눅스 -> 윈도우

-MySQL -> MariaDB

-서버 구동 개수 8개 -> 서버 구동 개수 3개

 

14.02.19. ver 5.0.0

-몇몇 그래프 색상 변경

-URL 연결 변경

-이동시 투명 기능 제거

-프로그램 시작 속도 약간 빠르게 개선

-통계1탭의 끝수 리스트 색상 변경

-집계탭 그래프 내의 몇몇 명칭 및 그래프 간격 변경

-최고 가동 시간 1000분 미만만 나오는 문제 수정

-생성탭 번호 생성 개수 300개에서 500개로 증가

-집계탭 내의 많이 사용한 기능 없애고 접속 정보로 변경

-통계1탭의 전 회차 출현 번호 없애고 끝수 관련 통계 추가

-버전 자리수 변경

 

13.12.12. ver 4.5

-윈도우8 미만에서 프로그램 화면 하얗게 변하는 거 수정

-리스트 항목 Ctrl+C 복사나 메뉴 복사시 이상한 문자들어가는 거 수정

-통계창 세로폭 크기 작게 변경

-통계 1, 2, 3 그래프 내의 몇몇 명칭 및 그래프 간격 변경

-고정수, 제외수 창 색상 변경

-5.0 버전을 위한 테스트 코드 삽입 및 기반 마련

 

13.12.12. ver 4.2

-프로그램 이동시 투명 처리

-"오류 알림" 명칭이 "사용 방법"으로 변경되고 기능도 이름에 맞게 변경

-"로또 통계" 창 크기 작게 변경

-검색탭, 생성탭 "총합", "연번" 컬럼 텍스트 색상 변경

-검색탭, 생성탭 조건 저장/불러오기 추가

-생성탭의 생성 조건 연번 항목에 4쌍, 5쌍 조건 추가

-생성탭에서 "저고 비율", "홀짝 비율", "연번 개수" 항목, 가끔 조건 초기화 안되던거 수정

-검색탭, 생성탭 마킹 그리는 부분 선 두께, 마킹 방법 변경

-집계 데이터 범위 수정, 최근 한 달간의 데이터로 집계 데이터 생성

-집계탭 하위 가동 시간 기준 변경

-집계탭 평균 가동 시간 항목 추가

-통계창 탭에 아이콘 추가, 변경

-통계2탭 홀짝 비율 그래프 제대로 안그려지는 문제 수정

 

13.12.08. ver 4.0beta

-서버 접속 안될 경우 프로그램 실행 안되게 변경

-프로그램 UI(프로그램 사이즈, 탭 구조, 버튼 위치, 기타 위치) 20여 가지 항목 변경

-연번 기준 로또 공식 홈페이지 최신 기준으로 변경(연번 최대 개수 3개 -> 5개)

-검색 탭의 검색 조건에 연번 항목 추가

-"프로그램 통계" 명칭이 "집계"로 변경

-집계탭 하위에 "가동 시간" 항목 추가

-고정수, 제외수 설정 파일로 내보내고 가져오도록 변경

-검색탭, 생성탭 리스트컨트롤 아이템 색상 변경

-프로그램을 얼마나 켜뒀는지 확인할 수 있는 "가동 시간" 버튼이 추가

-생성탭에 "중복 제거" 버튼 명칭 "중복 관련"으로 변경

-"중복 항목 보기" 창 추가

-광고 추가

-생성탭의 "내 번호 입력" 명칭, 입력 방식 변경

-그 밖에 크고작은 수정 및 변경 사항 30여 가지

 

13.12.04. ver 3.8

-3.7 버전 실행 중에 죽는 현상 수정

 

13.11.11. ver 3.7

-프로그램 서버 변경

-당첨 번호를 자동 업데이트 해주던 봇 프로그램 없애고 사용자가 프로그램 실행 시, 자동 업데이트하도록 변경

-검색탭 출력할 항목이 없을때 메시지 박스로 출력할 항목이 없다고 알려주고 작업 중지(기존엔 그냥 작업중지)

-생성탭에 "중복 제거" 버튼 추가

-생성탭 번호 생성 알고리즘 변경

-생성탭 번호 생성 개수 10000개에서 300개로 감소

-생성탭 제한 개수를 초과해도 "내 번호 입력" 되던거 안되게 수정

-프로그램 자체 통계 자료 밸런스 패치

-검색탭에서 "저고 비율", "홀짝 비율", "연번 개수" 항목, 가끔 조건 초기화 안되던거 수정

 

13.11.07. ver 3.5

-프로그램 이름 "오뇽 로또"로 변경

-새로운 통계3탭 추가. 123합, 456합, 첫수합, 간격합, 고저합, 끝수합 그래프 추가

-프로그램 통계 추가.

-프로그램 사이즈 작게 변경(세로 크기 감소)

-서버 연결 안됐을 때 프로그램 실행시 죽는 현상 수정

-검색탭, 생성탭에서 저고 비율, 홀짝 비율, 연번 개수 조건에 체크 탭 추가

-생성탭 저고 비율, 홀짝 비율, 연번 개수의 하위 조건을 라디오 버튼에서 체크 박스로 변경, 다중 선택 가능

-생성탭 몇몇 버튼 명칭 변경

-통계1탭 n회~n회 검색 시 "보너스 번호 포함" 기능 안되던거 수정

-통계2탭에서 총합계 범위가 255인데 225로 나오던거 수정

-통계2탭 "10번대 출현 횟수" 리스트 없애고 총 합계 범위 넓게 변경

-통계2탭에서 ESC 누르면 사라지는 현상 수정

-그래프 색상 변경

 

13.10.29. ver 3.0

-기존에 출력 했던 txt파일 불러오기 기능 추가

-고정수, 제외수 선택 시 전 회차 당첨번호를 기반한 선택 옵션 추가

-통계탭에 원하는 구간만 통계 낼 수 있는 검색 옵션 추가

-새로운 통계2탭 추가. 총합, 구간별 출현 횟수, 저고 비율, 홀짝 비율, 연번 비율 그래프 추가

-검색탭 조건 검색 후 선택된 항목과 그려지는 패턴이 다르던 문제 수정

-에디트 컨트롤 Align 오른쪽으로 변경

 

13.10.28. ver 2.8

-생성탭 내부 자료구조, 알고리즘 수정으로 이전 버전 대비 생성 및 삭제 속도 대폭 향상

   1. 로또 번호 생성 및 삭제시 무조건 리스트컨트롤을 재갱신하는 코드 수정(느린 속도의 주범)

   2. 테스트와 실험을 위한 무의미한 데이터 생성 및 대입, 삭제, 통계 코드 제거

-생성탭에서 로또 번호 최대 생성 개수 10000개로 제한

-특정 환경에서 캘린더 컨트롤 잘리는 현상 수정

-리스트컨트롤 선택 색상 변경

-고정수, 제외수 설정값 자동 저장 기능 추가

-"오류 알림" 버튼 추가

-그 밖에 설명하기 힘든 4건 정도의 소소한 개선사항 수정

 

13.10.16. ver 2.3

-특정 환경에서 숫자 생성시 46 나오던거 수정

 

13.10.16. ver 2.2

-분석탭, 생성탭 리스트 항목 개수 나오도록 텍스트 추가

-생성탭에서 리스트 아이템 지웠을때 기존 마킹 항목 안남도록 수정

-생성탭 조건 초기화 버튼 눌렀을때 생성 개수, 0개에서 1개로 수정

-윈도우8 기준 프로그램 크기 1024x807 에서 880x743으로 작게 수정

-몇몇 단어 명칭 변경

-고정수, 제외수 다이얼로그 색상 수정

 

13.10.15. ver 2.0

-화면 구성 조금 수정

-txt로 출력 기능 추가

-눈 덜 아프게 리스트컨트롤 색상 변환

-리스트컨트롤 아이템 선택 후 포커스를 잃으면 선택 표시 없어지던거 수정

-고정수, 제외수 기능 추가

 

13.10.13. ver 1.9

-생성탭 아무것도 없어도 엑셀 파일로 출력되는 거 수정

-분석탭, 생성탭 리스트컨트롤 선택된 아이템이 없어도 빈 공간 우클릭 되는 거 수정

-기타 예외처리 추가

-프로그램 크기 가로 -9, 세로 -6 작게 사이즈 수정

-일부 버튼 위치, 명칭 수정

-분석탭, 생성탭에 마킹 항목 추가

-새 버전 있을 경우 알림방법 수정

-공지사항 추가

-안정성 하락

 

13.10.01 ver 1.7

-저장은 안되지만 헤더 길이 조절이 가능하도록 수정.

-생성탭 - "생성 번호" 컬럼에 의미없는 보너스 번호 안나오게 수정

-생성탭 - 임의 번호 입력시 중복되는 숫자 입력 못하게 수정

-생성탭 - 무작위 번호 생성시 리스트컨트롤 포커스 자동 이동되도록 수정

-생성탭 - 무작위 번호 생성시 전과 다르게 기존 번호 안지우고 추가

-리스트컨트롤 전 항목 엑셀 파일 출력 기능 추가

-선택한 아이템만 엑셀 파일 출력 기능 추가

-선택한 아이템만 복사 기능 추가(Ctrl+C나 팝업 메뉴로 복사)

-선택한 아이템만 삭제 추가

 

13.09.16. ver 1.3

-통계탭 추가, 통계 기능 구현

-프로그램 중복 실행되지 않게 수정

-프로그램에서 Enter키나 ESC키 누를 경우 각종 컨트롤들이 사라지는 현상 수정

-입력 기능 중 예외처리 기능 조금 추가

-탭명 짤리던 현상 수정

-줄 간격 늘려 보기 편하게 수정

-최소화 버튼 추가

 

13.09.13. ver 1.0

-로또 번호 분석, 생성

 

 

 

'프로그래밍 관련 > 자작 프로그램' 카테고리의 다른 글

각도기 프로그램  (60) 2013.11.28
위경도 도, 도분, 도분초 변환  (19) 2013.10.17
EXIF Viewer, EXIF 뷰어  (7) 2013.10.05
Point Cloud  (0) 2013.10.02
넷마블 틀린그림찾기 매크로  (17) 2013.04.01
HSV Cam Viewer  (4) 2013.03.31
HSV Image Viewer  (1) 2013.03.31

+ Recent posts