- 다양한 주제에 대해 자유롭게 글을 작성하는 게시판입니다.
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 토비 15/06/19 35547 1
    15997 일상/생각소유의 종말: 구독 경제와 경험의 휘발성 1 사슴도치 26/02/02 353 7
    15996 오프모임참가하면 남친여친이 생겨 버리는 2월 7일 토요일 14시 사당 또는 이수 커피 모임 63 트린 26/02/02 957 4
    15995 일상/생각팀장으로 보낸 첫달에 대한 소고 6 kaestro 26/02/01 542 6
    15994 일상/생각와이프란 무엇일까? 2 큐리스 26/01/31 563 9
    15993 영화영화 비평이란 무엇인가 - 랑시에르, 들뢰즈, 아도르노 3 줄리 26/01/31 363 4
    15992 IT/컴퓨터[리뷰] 코드를 읽지 않는 개발 시대의 서막: Moltbot(Clawdbot) 사용기 24 nm막장 26/01/31 711 1
    15991 일상/생각결혼준비부터 신혼여행까지 (3/청첩장 및 본식 전, 신혼여행) 5 danielbard 26/01/30 374 4
    15990 정치중국몽, 셰셰, 코스피, 그리고 슈카 15 meson 26/01/29 1111 7
    15989 IT/컴퓨터램 헤는 밤. 28 joel 26/01/29 818 27
    15988 문화/예술[사진]의 생명력, ‘안정’을 넘어 ‘긴장’으로 8 사슴도치 26/01/28 421 20
    15987 IT/컴퓨터문법 클리닉 만들었습니다. 7 큐리스 26/01/27 566 16
    15986 게임엔드필드 간단 감상 2 당근매니아 26/01/26 552 0
    15983 스포츠2026년 월드컵 우승국//대한민국 예상 순위(라운드) 맞추기 관련 글 6 Mandarin 26/01/26 354 0
    15982 오프모임2월 14일 신년회+설맞이 낮술모임 (마감 + 추가모집 있나?없나?) 18 Groot 26/01/26 710 3
    15981 정치이재명에게 실망(?)했습니다. 8 닭장군 26/01/25 1009 0
    15980 IT/컴퓨터타롯 감성의 스피킹 연습사이트를 만들었어요 ㅎㅎ 4 큐리스 26/01/25 429 0
    15979 정치민주당-조국당 합당해서 무엇을 얻을 수 있을까요? 14 Picard 26/01/23 887 0
    15978 오프모임1/23 (금) 용산 또는 서울역 저녁 모임 8 kaestro 26/01/23 691 1
    15977 스포츠[MLB] 코디 벨린저 5년 162.5M 양키스행 김치찌개 26/01/22 326 0
    15976 정치한덕수 4천자 양형 사유 AI 시각화 11 명동의밤 26/01/21 1179 11
    15974 오프모임2월 7일 토요일 14시 사당 또는 이수 커피 모임 하실 분? 21 트린 26/01/20 892 5
    15973 도서/문학용사 힘멜이라면 그렇게 했을테니까 7 kaestro 26/01/19 1034 9
    15971 꿀팁/강좌나노바나나 프롬프트 - 걸리버 소인국 스타일 음식 이미지 3 토비 26/01/17 734 1
    15970 의료/건강혈당 스파이크란 무엇일까? 12 레이미드 26/01/17 1018 2
    목록

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

    댓글