어제 간만에 집에서 자유시간이 생겨서 이리저리 뒹굴다가,
뭔가 조잡한 잡동사니를 하나 만들었다.
무엇인고 하니 바로, "로또 자동 번호 생성기"... --;
매일 랜덤으로만 찍는 내 인생이 불쌍해서, 만들어보았는데 역시나 랜덤인듯한 느낌이 드네...
--MORE--
그냥 랜덤으로만 찍기는 내 지갑에게 미안해서 만들어보았다.
사실 뭔가 번호간의 법칙을 가정해야되는데... 한참을 고민하다가 가설을 세웠다.
"로또 번호들 중, 이전 당첨 번호와 다음회 당첨 번호는 연관 관계가 있다." 두둥...
헛헛헛... 말이 안되는 것을 알지만, 어차피 같은 통 안에서 돌아가는 번호이니
요즘 로또 비리 동영상도 돌아다니는 판국에 나름 일리가 있다는 생각을 혼자하며 맹그렀다 -,.ㅡ
연관 관계가 있기는 한데 무슨 연관 관계인지 모르므로, neural network의 힘을 빌리기로 결정.
귀차니즘으로 인해 neural network 부분은
FANN을 사용해서 간단하게 구현했다.
( neural network에 대한 자세한 질문은 패스. 기억안남 ㅎㅎ )
프로그램의 동작 방법은 다음과 같다.
로또 사이트에 가서 어제까지의 데이터를 긁어와서 만든 파일을 입력으로 받는다.
(이건 직접 다 긁어와서 파일로 만들어 놨음. "input.txt"
추후 사용시에는 윗줄에다가만 긁어서 같은 형식으로만 추가하면 됨...)
"훈련하기" 버튼을 누르면, 이 파일을 이용해서 나름 파싱을 하여,
내 가설에 맞고, FANN에서 쓸수 있는 형식으로 바꿔준다.
그 후 Training을 시작한다.
Training option을 "config.txt"를 통해 사용자가 지정할 수 있도록 했는데 디폴트 값은 다음과 같다.
connection_rate 1
learning_rate 0.7
num_neurons_hidden 45
desired_error 0.001
max_iterations 1000
iterations_between_reports 500
activation_steepness_hidden 1.0
activation_steepness_output 1.0
지금 설정은 대략 10~20초 정도에 training이 끝나도록 대충 맞춰둔 결과이니,
각자 입맛에 맞게 바꿔서 돌리는 것을 추천한다.
잘못 바꾸면 에러가 날수도 있으며, 무지무지 시간이 오래 걸릴수도 있다.
각 옵션에 대한 자세한 설명이 필요하면 FANN 홈피를 참조하면 된다~
다 끝나면, Train된 결과는 임시 파일(nntrain.dat)에 저장한다.
(이건 다음에 트레이닝 안하구 빠르게 돌리기 위함)
그리고 "찍어보기" 버튼을 누르면 임시파일을 이용해서 찍어본다. ㅋ
그럼 결과 파일로 1~45번에 대한 확률값이 나오고,
이 파일을 토대로 로또를 찍으면 된다~ 탕탕~
Click to Download
Ps1. 나도 말 안되는거 아니깐 태클 금지.
Ps2. 가설이 맞다손 치더라도 neural network을 사용하기에는 아직 데이터가 부족하다. 몇년 지나면 내껄로 혹시 1등이 나올수도 있지 않을까? ㅎㅎ