- 다양한 주제에 대해 자유롭게 글을 작성하는 게시판입니다.
Date 17/02/08 10:35:42
Name   April_fool
Subject   로또 번호와 정규분포

어제의 일입니다. 부장님이 잡담하시는 것을 듣고 있는데, 문득 그 중에 “로또에서 각 번호들의 총합이 백 얼마인 것이 가장 당첨 확률이 높더라”는 내용이 있더군요. 당연한 게 아닌가? 싶기도 했지만, 그래도 왠지 확인을 해보고 싶더라고요.

그래서 다음과 같은 간단한 프로그램을 짜서 돌려 보았습니다.

  1. import random
  2.  
  3. def plusAll(a):
  4.     # 리스트 속에 있는 모든 숫자를 더해 반환한다.
  5.     result = 0
  6.     while len(a) != 0:
  7.         result += a.pop()
  8.     return result
  9.  
  10. def counter(a):
  11.     # 리스트 속의 원소의 개수를 세어 튜플로 반환한다.
  12.     result = {}
  13.     for i in a:
  14.         if i in result:
  15.             result[i] = result[i] + 1
  16.         else:
  17.             result[i] = 1
  18.     return result
  19.  
  20. = []
  21. for i in range(1000000+1):
  22.     b = random.sample(range(1, 45+1), 6)
  23.     a.append(plusAll(b))
  24. = counter(a)
  25. = sorted(b.items())
  26.  
  27. file1 = open("a.tsv", "w")
  28. for (k, v) in c:
  29.     line = str(k) + "\t" + str(v) + "\n"
  30.     file1.write(line)
  31. file1.close()

이 파이썬 프로그램은 랜덤으로 로또 번호를 백만 개 생성하여, 그 숫자들의 합이 몇 개나 나오는지 세어서 특정 파일에다가 그 결과를 기록합니다. 이 결과물은 Microsoft Excel에서 열어볼 수가 있지요. 그리고, 그 결과물을 엑셀에서 분산형 차트로 그려보면 다음과 같습니다.

 …어디서 많이 본 듯한 모양의 그래프가 나왔습니다. 제가 듣기로, 이런 모양을 가리켜 [정규분포]라고 한다고 하더군요.

그러면, 저 그래프에서 가장 높은 값(=가장 많이 나온 값)은 어디일까요? 생각해보면, 로또의 각 숫자를 더한 값 중 가장 작은 수는 1+2+3+4+5+6=21이고, 가장 큰 수는 45+44+43+42+41+40=255입니다. (21+255)÷2=138이지요. 실제로 생성된 파일의 데이터를 살펴보아도, 138 부근의 값이 가장 많이 나온 것을 알 수 있습니다. 다시 말해서, 이론적으로 로또의 각 숫자의 합이 138과 유사한 경우가 상대적으로 당첨 확률이 높다는 결론이 나옵니다. 이걸 응용하면 옛날에 타임라인에 올렸던 로또번호 생성 프로그램을 개량할 수 있을 것 같아요.

이상, 오늘의 월도짓이었습니다.




3


    목록
    번호 제목 이름 날짜 조회 추천
    4768 음악KOTOKO - 雪華の神話 1 April_fool 17/02/04 3228 0
    4805 기타로또 번호와 정규분포 33 April_fool 17/02/08 12949 3
    4822 IT/컴퓨터간단한 로또 번호 생성 프로그램 13 April_fool 17/02/09 7849 3
    4831 IT/컴퓨터로또 번호 생성 프로그램과 정지 문제 11 April_fool 17/02/10 5426 1
    4842 음악N.EX.T - Lazenca, Save Us 8 April_fool 17/02/11 4706 2
    5554 정치각 후보들의 공약 중 마음에 드는 것을 뽑아 봅시다. 1 April_fool 17/05/01 4157 0
    6037 IT/컴퓨터전일제 비전공자 코딩교육 업체에 대한 간단한 정리. 21 April_fool 17/08/01 14298 0
    6212 과학/기술FDA, 특정 인공심장박동기의 해킹 위험성 제기 19 April_fool 17/09/02 5802 0
    6231 IT/컴퓨터[긴급] 혹시 알툴바나 스윙 브라우저의 자동 로그인 기능 “알패스”를 쓰시는 분이 계신가요? 24 April_fool 17/09/05 5298 0
    7360 의료/건강[인용] 인간은 언제 죽는가 20 April_fool 18/04/10 5894 3
    8497 사회한국의 미약한 공익신고자 보호 - 대리수술 편 3 April_fool 18/11/09 5048 1
    8572 꿀팁/강좌지금 쓰는 안경에만 돈을 75만원씩 퍼부은 사람이 알려주는 안경 렌즈 선택의 거의 모든 것 19 April_fool 18/11/28 53251 41
    8703 의료/건강저의 정신과 병력에 대한 고백 13 April_fool 18/12/29 6811 44
    8761 IT/컴퓨터문재인 정부의 ActiveX 제거 공약이 어느 정도 실현될 것 같습니다. 23 April_fool 19/01/14 6489 1
    5915 오프모임내일 저녁 고기벙개 52 aqua 17/07/07 5929 2
    6268 일상/생각친구의 결혼 6 aqua 17/09/13 3635 10
    6327 여행안나푸르나 기슭에 가본 이야기 (주의-사진많음) 6 aqua 17/09/23 4080 18
    6370 IT/컴퓨터모델러의 히포크라테스 선서 4 aqua 17/10/05 4090 7
    6443 일상/생각울진 않을거 같습니다. 14 aqua 17/10/21 4357 51
    6751 도서/문학선귤당 선비님 3 aqua 17/12/10 3784 7
    10538 일상/생각한국인이 생각하는 공동체와 영미(英美)인이 생각하는 공동체의 차이점 14 ar15Lover 20/05/01 5136 4
    10544 사회현대사회의 문제점(1) 23 ar15Lover 20/05/03 7180 9
    8575 일상/생각조던 피터슨과 한국의 보수우파, 박정희. 46 ar15Lover 18/11/29 6733 1
    10332 일상/생각요즘 인터넷상에서 자주보이는 논리적 오류. 회의에 의한 논증. 13 ar15Lover 20/02/28 3836 9
    10438 일상/생각중국에서 미국식 연방제를 도입하기는 힘들까요? 18 ar15Lover 20/03/28 4254 0
    목록

    + : 최근 2시간내에 달린 댓글
    + : 최근 4시간내에 달린 댓글

    댓글