- 다양한 주제에 대해 자유롭게 글을 작성하는 게시판입니다.
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


    목록
    번호 제목 이름 날짜 조회 추천
    공지 티타임 게시판 이용 규정 2 Toby 15/06/19 30675 6
    14646 게임[LOL] 5월 3일 금요일 오늘의 일정 발그레 아이네꼬 24/05/02 45 0
    14645 정치취소소송에서의 원고적격의 개념과 시사점 등 5 + 김비버 24/05/02 256 5
    14644 정치경기북도로 인해 이슈가 되는 김포 13 Leeka 24/05/02 657 0
    14643 오프모임5월7일에 가락몰에서 한우 같이 드실 파티원 모집합니다. 15 비오는압구정 24/05/02 452 5
    14642 음악[팝송] 토리 켈리 새 앨범 "TORI." 김치찌개 24/05/02 66 0
    14640 일상/생각합격보다 소통을 목표로 하는 면접을 위하여(2) - 불명확한 환경에서 자신을 알아내기 위해 안전지대를 벗어나고, 이를 꾸며서 표현하는 방법 kaestro 24/05/02 203 2
    14639 게임[LOL] 5월 2일 목요일 오늘의 일정 발그레 아이네꼬 24/05/01 122 0
    14638 기타드라마 눈물의 여왕 김치찌개 24/05/01 281 0
    14637 일상/생각합격보다 소통을 목표로 하는 면접을 위하여(1) - 20번의 면접을 통해 느낀 면접 탐구자의 소회 4 kaestro 24/05/01 402 4
    14636 사회"내가 기억하는 중국은 이렇지 않았다" - 중국의 성장과 이민 2 열한시육분 24/04/30 800 0
    14635 게임[LOL] 5월 1일 수요일 오늘의 일정 발그레 아이네꼬 24/04/30 174 1
    14634 의료/건강환자 곁을 지키는 의료진에게 아끼지 않는다는 합당한 보상 9 꼬앵 24/04/30 665 0
    14633 일상/생각그래서 고속도로 1차로는 언제 쓰는게 맞는건데? 31 에디아빠 24/04/30 886 0
    14632 일상/생각함께해서 더러웠고 다시는 만나지 말자. 비사금 24/04/29 781 0
    14631 방송/연예범죄도시4로 보는, 4월 1일~28일까지의 극장 관객 수 3 Leeka 24/04/29 283 1
    14630 방송/연예민희진 - 하이브 사건 관련의 시작이 된 계약서 이야기 6 Leeka 24/04/29 821 1
    14629 일상/생각방문을 열자, 가족이 되었습니다 9 kaestro 24/04/29 580 9
    14628 꿀팁/강좌지역별 평균 아파트관리비 조회 사이트 무미니 24/04/28 331 2
    14626 음악[팝송] 걸 인 레드 새 앨범 "I'M DOING IT AGAIN BABY!" 김치찌개 24/04/27 252 0
    14625 의료/건강SOOD 양치법 + 큐라덴 리뷰 7 오레오 24/04/26 660 0
    14624 일상/생각5년 전, 그리고 5년 뒤의 나를 상상하며 6 kaestro 24/04/26 546 3
    14623 방송/연예요즘 우리나라 조용한 날이 없네요 7 니코니꺼니 24/04/26 1180 0
    14622 IT/컴퓨터5년후 2029년의 애플과 구글 1 아침커피 24/04/25 534 0
    14621 기타[불판] 민희진 기자회견 63 치킨마요 24/04/25 1965 0
    목록

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

    댓글