로또 확률 분석과 번호생성기

카테고리 없음 2013. 10. 17. 03:09

하 수상하고 힘든 시절이야.

정치 경제 사회 문화 역사 어느 하나 수상하지 않은 곳이 없고,

스펙 쌓는 대딩은 대딩 대로,

가난하다고 해서 사랑을 모르는 청춘 남녀는 그들 대로,

또 모가지가 간당 간당 하는 직장인들은 또 그들 대로 다들 악전고투를 하고 있는 시절이야

 

이런 수상하고 힘든 시절에,

하늘하고 땅이 딱하고 붙어버리지 않는 한,

위너가 될 수 없다고 생각하는 사람들에게 남은 마지막 희망은 역시 로또겠지?

그래서 거지 똥꼬에서 콩나물을 뽑는 심정으로 매주 자동 다섯장을 외치고 일주일 간 허황된 꿈을 꾸고 있는 것일 거야.

결코 이길 수 없음을 알면서도 달려드는 결기에 찬 사람들을 생각하면 그저 슬플 뿐인데,

가만히 보니 이걸 이용하는 후레자식들이 있더란 말이야.

그래서 드레퓌스 사건 때 미친 프랑스 사회를 에밀 졸라가 졸라게 고발한 것을 흉내 내어,

나도 이 후레자식들을 고발하려고 해.

 

알다 시피 로또 1등에 당첨된 확률은 대략 8백만 분의 1 이야.

돼지 꿈을 꿨네 어쩌네 아무리 용천지랄을 해도 저 사실 만은 변함이 없지.

수학적으로는 후행사건이 선행사건에 독립되어 있다고 표현하는데,

예를 들어 동전을 999번을 던져 모두 앞면이 나온 상태에서 1000번째 동전을 던져 다시 앞면이 나올 확률은 여전히 절반이라는 것이야.

근데 이 확률을 대폭 올릴 수 있다고 주장하는 사람들이 있는데,

최첨단의 과학적인 분석 방법을 통해 당첨 번호를 예상할 수 있는 고유한 시스템을 만들었대나 뭐래나.

그래서 이 예상당첨번호를 돈을 받고 팔기까지 하는데,

한 마디로 혹세무민하는 무리들이지.

바로 이 자들이 바로 오늘의 후레자식들이야.

 

나는 프로그램을 만드는 짓을 해서 밥을 먹고 살아.

프로그래머라고 하면 왠지 과학적이고 이성적일 것 같지?

적어도 나는 그렇게 생각하고 있는데, 꼭 그렇지도 않더라고.

프로그래머 중에도 혈액형으로 사람의 성격을 알 수 있다고 믿는 사람이 있고,

심지어 위에서 말한 혹세무민하는 무리에게 돈을 내고 예상당첨번호를 사는 사람도 봤어.

내 팀원이라면 양지를 지향하며 음지에서 졸라 갈구겠지만, 부장님이네.

부장님 까지 홀린 자들에게, 옹졸하게 욕을 하고 옹졸하게 분개만 하는데,

문득 그런 생각이 드는 거야.

조그만 일에 분개만 할 게 아니라, 대차게 한 번 까보자.

지들도 다 먹고 살려고 하는 일이라 마음이 아프긴 하지만,

이게 다 명랑 사회를 구현하는 위한 일환이라 생각하고, 마음을 모질게 먹기로 했어.

 

검색엔진에서 '로또' 라고 치면,

수 많은 로또 확률 분석 업체들이 온갖 현란한 용어와 디자인으로 자기들의 과학성과 우수성을 나불대는데,

단언컨데 다 개소리야.

깊이 생각할 필요도 없이 로또의 당첨번호를 예측하다는 것 자체가,

죽은 자식의 불알을 만졌는데 발기탱천하는 약이 있더라 하는 것 만큼이나 택도 없는 소리이긴 하지만,

그래도 까는 놈에 대한 최소한의 예의로 왜 개소리인지에 대해 한번 살펴보기는 할게.

 

업체마다 조금씩 차이가 있겠지만,

그 자들이 내세우는 예측 시스템은 크게 두 가지로 갈려.

평균회기이론에 기반한 '과학적'인 방법과,

풍수 / 꿈 / 사주 등에 기반한 비과학적인 방법인데,

비과학적인 방법에 관해서는 언급할 필요도 못 느끼겠어.

그냥 말할 수 없는 것에 관해서는 침묵하여야 한다고 해 둘게.

 

그럼 과학적인 평균회기이론이 남는데,

이건 간단히 이야기하자면 이런 것이야.

앞에서 말한 동전 던지기의 예에서,

동전을 1000번을 던지면 앞면 혹은 뒷면만 1000번이 나오기 보다는 앞 뒤가 각각 500번씩 나오는 것이 자연적인 상태라는 것이야.

그러니 로또의 45개 번호도 각각 균등하게 당첨되는 것이 자연스러우니,

이전에 당첨회수가 적은 번호가 이번에 당첨될 확률이 높다는 것이야.

얼핏 들으면 맞는 말 같긴 한데, 시행 횟수가 함정이야.

두 가지 조합 밖에 없는 동전 던지기에서는 1000번이면 평균에 회기하는 유의미한 숫자일지 모르나,

45C6 (45 콤비네이션 6, 당연히 알지?) 의 조합이 있는 로또에서 평균에 회기하는 값을 찾으려면,

글쎄 얼마나 많은 시행횟수가 필요할지 계산도 안돼.

굳이 하고 싶지도 않고.

다만 현재까지 시행된 558회가 너무나도 터무니 없는 횟수라는 건 확실해.

 

위에서는 당첨번호를 예상하는 방법 중에서 최다 출현한 번호에 대해서만 이야기했는데,

이것 만으로는 장사가 안된다고 생각했는지,

업체에서는 좀 더 다양한 –그러나 여전히 개소리인- 이론들을 몇 개 고안했는데, 대충 다음과 같아.

하나씩 설명을 하긴 할텐데, 어차피 개소리니 굳이 안 읽어도 좋아.

 

  1. 총합

    6개 숫자를 모두 더하면 19 ~ 255의 값이 되는데, 이를 몇 개의 구간으로 나눈 후, 가장 많이 당첨된 구간 혹은 가장 적게 당첨된 구간을 제시하는 방법이야.

    예) 1, 4, 7, 20, 31, 42 -> 105

  2. 123합

    총합과 같은데, 6개의 숫자 중 번호가 낮은 세 숫자의 합으로 계산해. 6 ~ 123의 값을 가져.

    예) 1, 4, 7, 20, 31, 42 -> 12

  3. 456합

    123합과 같은데, 6개의 숫자 중 번호가 높은 세 숫자의 합이야. 최소값과 최대값은 각각 15 ~ 132.

    예) 1, 4, 7, 20, 31, 42 -> 93

  4. 첫수합

    6개의 숫자 중 십의 자리를 더한 수. 0 ~ 24.

    예) 1, 4, 7, 20, 31, 42 -> 9

  5. 끝수합

    6개의 숫자 중 일의 자리를 더한 수. 2 ~ 52.

    예) 1, 4, 7, 20, 31, 42 -> 15

  6. 간격합

    6개의 숫자 중 가장 큰 수에서 가장 작은 수를 더한 값. 7 ~ 85.

    예) 1, 4, 7, 20, 31, 42 -> 43

  7. 간격차

    6개의 숫자 중 가장 큰 수에서 가장 작은 수를 뺀 값. 5 ~ 44.

    예) 1, 4, 7, 20, 31, 42 -> 41

  8. 저고 비율

    1 ~ 22까지를 낮은 숫자, 23 ~ 45를 높은 숫자라 하는데, 6개의 숫자 중 낮은 자리의 숫자와 높은 자리의 숫자의 비율을 말해. 0:6 부터 6:0 까지가 가능하겠지.

    예) 1, 4, 7, 20, 31, 42 -> 4:2

  9. 홀짝 비율

    저고 비율과 유사하게 각 숫자의 홀짝 여부를 따져. 역시 0:6 부터 6:0 까지가 가능해.

    예) 1, 4, 7, 20, 31, 42 -> 3:3

  10. 연번 갯수

    연속한 숫자의 개수. 예를 들어 6 7 8 9 의 경우 6과 7, 8과 9각 각각 연번이므로 두 쌍이 있는 것이야. 0쌍 ~ 3쌍이 가능해.

    예) 1, 2, 3, 6, 7, 8 -> 2쌍

 

딱 봐도 아무 쓰잘데기 없는 짓 같지?

이런 것과 로또 당첨이 무슨 관계가 있겠어?

그런데 이런 쓰레기 같은 짓을 과학적인 이론이랍시고 포장을 하고,

이 이론에 기반한 예상당첨번호를 만들어 돈을 받고 파는 사람들이 있다니깐.

있는 정도가 아니라 제법 장사가 되는지 망하지도 않고 여러 업체가 성행하고 있어.

 

내가 프로그램 만드는 짓을 해서 밥을 먹고 산다고 한 것 기억하지?

그래서 위 이론대로 예상당첨번호를 생성하는 프로그램을 직접 만들어 봤어.

위의 이론들을 가지고 만든 번호가 아무 의미도 없다는 것을 직접 보여 줘,

어디까지나 어린 백성을 혹세무민하는 후레 자식들을 고발하기 위한 숭고한 목적에 의한 일이지,

내가 집에서 노는 프로그래머이거나,

이제는 돌아와 거울 앞에 선 남자라 시간이 남아 도는 등의 이유는 절대 아니야.

 

프로그램은 역대 당첨 번호를 분석한 통계를 보여주는 것과,

위에서 말한 쓰잘데기 없는 이론에 따라 예상 당첨 번호를 생성하는 두 가지 기능으로 이루어져 있어.


먼저 분석 편.





 

최근까지의 역대 당첨 번호를 기반으로 하여,

총합이나 123합 뭐 이따구 통계를 보여줘.

출현 번호는 각 숫자가 출현한 번호를 표시하는데 반해,

나머지 통계는 몇 개의 구간으로 나눠 각 구간별 횟수를 보여주지.

총합을 예로 들자면 아래 차트에서 보이다 시피 136에서 174 사이에 속하는 경우가 237회로 가장 많아.

 


그리고 생성 편





 

생성 탭에서는 실제로 예상당첨번호를 생성할 수 있는데, 세 가지 생성 조건을 줄 수 있어.

1. 당첨 번호

분석 편에서 이야기한 분석 종류 별로 최다 출현 구간과 최소 출현 구간을 지정할 수 있어.

2. 포함 번호

특정 번호를 반드시 포함하도록 지정할 수 있어.

역대 최다 혹은 최소 담첨 번호 N개를 자동으로 포함할 수도 있어.

3. 제외 번호

특정 번호를 반드시 제외한다는 점을 빼면 포함 번호와 동일해

 

이렇게 생성 조건을 지정하고 생성 버튼을 누르면,

이른바 예상 당첨 번호가 만들어 지는데,

이를 최근의 당첨번호와 비교하여 당첨여부를 시뮬레이션 할 수 있어.

생성 방법에도 세 가지가 있는데,

번호를 한 세트만 생성하는 것 (한번 실행),

한번 실행을 조금씩 쉬면서 여러 번 실행하는 것 (한번씩 실행),

화면 업데이트는 생략하고 백 만번 이상 존나게 돌리는 것 (일괄 실행)이 그것이야.

 

번호를 생성하고 나면, 최근의 당첨번호와 비교하여 당첨여부를 판단한다고 했지?

이 결과는 요약 화면에서 볼 수 있어.

일괄 실행으로 5천만번(주간 평균 판매량이야)을 돌린 결과인데,

1등이 5명이 나와서 22억씩 갈라 먹는 훈훈한 결과가 보이지?

그런데 97.45834%에 해당하는 사천팔백칠십이만구천백육십구 명의 사람들은 꽝이네.

이미 알고 있는 확률이었지만 직접 눈으로 보니 또 새롭지?

 

이 프로그램은 누구나 자유롭게 사용할 수 있는 프리웨어야.

심지어 소스까지 공개해뒀으니,

혹 나 같이 시간이 남아 도는 프로그래머가 있으면 더욱 개선해줬으면 좋겠어.

설치 : https://neverlotto.codeplex.com/downloads/get/clickOnce/NeverLotto.application

소스 : https://neverlotto.codeplex.com/

 

여태껏 한 이야기를 정리 해 볼게.

1. 최첨단의 과학적인 분석 방법이라며 로또의 예상 당첨 번호를 파는 놈들은 다 후레 자식들이야.

2. 그래도 혹시나 하는 마음이 있으면, 위 프로그램을 다운로드 받아 과학적인 방법이라는 게 얼마나 개소리인지를 직접 눈으로 확인을 해 보셔.

3. 또 그래도 상처 입고 순결한 마음을 기대고 싶은 곳이 필요하다면, 차라리

이 분의 성함을 크게 외쳐 보기 바래. 혹시 아나?

: