재미로 만들어보는 로또 번호 생성기
로또 1등!! 생각만해도 너무 신나지 않나요? 여러분들은 1,2,3,4,5,6이 적혀있는 로또와 3,14,18,22,35,41이 적혀 있는 로또 중 하나를 드린다고 하면 어떤 로또를 선택하시겠습니까? 당연히 후자를 선택하겠지만 사실 당첨 확률은 두 로또 모두 같습니다. 사실 로또는 각 번호가 나올 확률이 날마다 초기화 되는 독립사건이기 때문에 이전 당첨 번호들로 미래의 번호를 예측한다는 것은 말이 안되는 일입니다. 그렇기에 이번 포스팅은 재미로만 봐주셨으면 좋겠습니다. 이번 글에서는 "파이썬"이라는 언어를 사용하여 로또 번호를 생성하는 간단한 코드를 만들어보겠습니다. 이 코드는 실제 로또 번호 생성 방식을 따라가지는 않지만, 간단한 확률 계산을 통해 번호를 생성하는 방법을 다룰 것입니다.
필요한 라이브러리 불러오기
항상 코딩을 시작하기 앞서 코드 작업에 필요한 라이브러리를 불러와야하는데 이번에는 numpy라는 array를 다루는 라이브러리와 난수를 생성하는데 필요한 random 라이브러리를 불러오겠습니다.
데이터 불러오기
우리는 먼저 과거의 로또 번호 데이터를 활용하여 각 번호가 나오는 빈도에 따라 확률을 계산할 것입니다. numbers.txt 파일에는 이전 로또 추첨 결과가 다음과 같이 줄 단위로 저장되어 있고 글을 작성하는 8/10일 기준으로 위에서부터 가장 최신 번호입니다.
이렇게 numbers.txt 파일을 만들어 준 후 코드를 통해 불러올 수 있는데 아래의 코드를 실행하게 되면 numbers라는 변수에 텍스트 파일의 모든 줄이 list 형식으로 들어가게 됩니다.
확률 계산하기
이제 우리는 각 번호가 나오는 빈도에 따라 확률을 계산할겁니다. 초기에 "probability"라는 변수는 45개의 번호가 모두 1이라는 같은 선택확률을 갖도록 만들었습니다. 이후에 각 번호가 나왔던만큼 확률을 빼줄건데요 최신에 나온 번호일수록 이번회차에 나올 확률이 적어지므로 가장 최근에 나온 회차는 1에서 1/2를 빼주고 전전화차는 1/4 그 전회차는 1/8 이런식으로 총 15회차에 걸쳐 나온 번호들의 확률을 빼주었습니다. 혹시나 너무 자주 나온 번호의 경우 확률이 0아래로 내려갈 수 있으니 최소값은 0으로 설정하였고 이제 전체확률의 합이 1이 되도록 각 확률값을 더한 값을 각 확률에서 나눠주었습니다.
로또 번호 생성하기
자 그러면 이제 확률을 만들었으니 이를 기반으로 로또 번호를 생성합니다. 1이상 46미만의 수, 즉 1부터 45중에서 위에서 정의한 확률에 의해서 랜덤으로 6개의 숫자를 뽑아 줄 것인데 가운데 while문의 경우 반복되는 숫자가 나오는 경우에는 다시 번호를 생성해주도록 만들어주는 코드입니다.
코드 결과
자, 이제 만들어준 코드를 실행하면 로또 번호가 나옵니다. 결과로 나온 로또 번호는 다음과 같습니다.
마치며
이 코드는 단순히 재미를 위한 것이며, 실제 로또 번호 생성 방식과는 다르다는 점을 기억해주세요. 로또는 단순한 확률 게임이지만, 흥미로운 데이터와 계산을 통해 재미있는 프로그래밍 경험을 할 수 있습니다. 파이썬 프로그래밍과 확률 계산의 기초를 조금 더 익힐 수 있는 좋은 기회가 될 것입니다. 재미있게 프로그래밍을 즐기며 로또 번호를 생성해보세요! 저는 그럼 위 번호로 로또사러 가보겠습니다. 모두 부자되세요~