이번에 재미삼아 Python으로 로또 번호를 생성하는 걸 만들었습니다.
그냥 단순히 1~45 까지의 6개 번호를 뽑아도 간단하게 만들 수 있지만, 개인적인 목표는
- 지금까지 나온 회사의 번호를 모두 파싱
- 1~45의 번호를 각 번호별로 몇 번씩 나왔는지 카운팅
- 번호별로 나온 카운팅 값으로 weighted random을 돌려서 랜덤 숫자를 뽑음.
- 랜덤 하게 나온 번호가 지금까지 나온 횟차를 기준으로 총 몇 등이 몇 번 나왔는지 보여주기...
로 잡고 코딩을 시작했어요.
그리고 코딩을 시작했던 기준으로 로또 회차가 860...? 정도 진행이 되어서 매번 할 때마다 번호를 파싱 하는 건 비효율적이라고 생각되어서 한번 파싱 한 데이터를 json으로 저장해두기로 했습니다.
일단 완성된 코드는... 보잘것 없는 제 깃허브에 올려두었습니다.
아 그리고 직접 번호를 입력해서 등수를 확인도 할 수 있어요...
일단 실행을 하면 아래와 같이 보입니다. 최근 글을 쓰던 기준으로 863회 까지 진행이 되었습니다.
******** Info ********
Name : lotto
Last No : 863
******** Lotto Number ********
1. Number Ranking
2. Number Update
3. Make number
4. Check input numbers
5. Exit
select :
여기서 1번을 선택하면 아래와 같이 보여주는데요. 각 번호별로 나온 회차를 알려줍니다.
글 쓰면서 보니 뒤에 필요없는걸 더 출력하고 있네요. (나중에 안 까먹으면 지워야겠어요...)
그리고 키 하나를 받을 동안 기다리게 해두었습니다.
새로운 키를 입력하면 처음 메뉴로 돌아갑니다.
1 = 148, 2 = 136, 3 = 133, 4 = 141, 5 = 134, 6 = 133, 7 = 135, 8 = 138, 9 = 109, 10 = 142, 11 = 140, 12 = 142, 13 = 147, 14 = 138, 15 = 132, 16 = 134, 17 = 146, 18 = 136, 19 = 135, 20 = 143, 21 = 133, 22 = 106, 23 = 113, 24 = 137, 25 = 129, 26 = 136, 27 = 151, 28 = 119, 29 = 116, 30 = 128, 31 = 137, 32 = 117, 33 = 145, 34 = 150, 35 = 128, 36 = 130, 37 = 134, 38 = 135, 39 =
137, 40 = 142, 41 = 118, 42 = 129, 43 = 158, 44 = 130, 45 = 134,
all = 6034 1/n = 4
Enter any key...
메뉴 2번은 저장되어 있는 마지막 회차 번호를 기준으로 업데이트를 진행합니다.
업데이트할 숫자가 있으면 받아와서 json에다가 저장을 합니다.
메뉴 3번은 weighted random을 사용해서 번호 6개를 만들고 이번 당첨 번호를 기반으로 등수를 확인합니다. 그냥 영어 단어가 생각 안나서 ranking이라고 했어요. 이름 짓는 게 항상 어렵죠...
젤 처음은 당첨 안된 횟수(0등)이고 뒤에서부터 1~5등입니다.
.
.
.
(생략)
861 회차 등수 : 0
862 회차 등수 : 5
863 회차 등수 : 0
number list : ['1', '10', '13', '31', '38', '43']
ranking : [836, 0, 0, 0, 2, 25]
Enter any key...
메뉴 4번은 직접 번호를 6개 입력받아서 랭킹을 확인 가능하도록 했어요. 참고로 에러 인풋은 처리 안 했습니다... ㅎ
결론...
결과적으로 중요한 메뉴는 3번입니다...
그리고 3번으로 여러 번 돌리면서 번호를 받아보면 느끼는 건...
5등도 힘들더군요... 제가 여러 번 해봐도 5등이 860회 중에서 20번 내외 정도밖에 안 나오더군요.
4등도 가끔이고... 3등은 진짜 보기 힘들고...
우리나라는 어떻게 매주 당첨자가 나오는 건지 대단하네요(부럽다..)
'Programming' 카테고리의 다른 글
[Python] os 모듈의 walk를 활용한 경로 탐색 방법 (0) | 2019.07.18 |
---|---|
linux screen 사용 방법 (0) | 2019.07.10 |
[Linux] Raspberry Pi SD Card Back-up by Win32 Disk Imager (0) | 2018.10.22 |
[Linux] 라즈비안 - 한글 깨짐 방지 (0) | 2018.09.28 |
[Algorithm] 알고리즘 준비 05. 2차원 배열 지그재그 탐색 (0) | 2018.09.21 |