파이썬으로 로또 번호 생성기 만들기

파이썬의 랜덤 모듈을 이용해서 로또 번호를 생성하는 프로그램을 만들어 봅시다.

코드는 다음과 같습니다.

import random

gen_count = 5  # 생성할 개수

arr = [x for x in range(1, 46)]  # 1부터 45까지 생성
for x in range(0, gen_count):
    random.shuffle(arr)     # 섞기
    arr_selected = arr[:6]  # 6개만 선택
    arr_selected.sort()     # 선택된 번호를 정렬
    print(arr_selected)     # 출력

이 코드에 대해 설명을 하겠습니다.

첫째로, 랜덤 모듈을 호출합니다. 파이썬은 난수생성을 위해서는 별도로 모듈을 불러와야 한다는 특징이 있습니다. 다만, 랜덤 모듈은 파이썬을 설치하면 기본으로 설치되는 모듈이므로 pip 명령을 통한 설치가 필요없습니다. 그 다음으로 gen_count 변수에 생성할 조합의 개수(여기서는 5개)를 대입합니다.

그 다음으로 1부터 45까지의 자연수가 하나씩 들어 있는 배열을 선언합니다. 파이썬 배열 필터링하기 포스트에 서술한 바와 같이 파이썬에서는 배열 안에 for 문을 써서 간단히 값이 반복되는 배열을 만들 수 있습니다. 위에서 최댓값이 45가 아니라 46인 이유는 (x, y)일 때 시작은 x부터이지만 y에 도달하는 즉시 반복이 끝나서 결과적으로 y보다 한 단계 작은 값까지만 반복되기 때문에 1이 더 큰 46으로 설정하는 것입니다.

그리고 for 문을 통해 gen_count의 수만큼 반복합니다. 1부터 45까지 대입된 arr 배열의 원소를 랜덤 모듈의 shuffle 메소드를 이용해 무작위로 섞은 다음 6개만 추려내서 arr_selected 배열에 대입하고 추려낸 배열에 sort 메소드를 써서 보기 좋게 정렬합니다. 이제 마지막으로 그 결과를 출력합니다.

이를 실행하면

[1, 5, 12, 13, 18, 45]
[1, 5, 10, 12, 15, 39]
[5, 15, 21, 23, 25, 43]
[9, 18, 30, 31, 34, 45]
[3, 4, 15, 18, 19, 39]

이와 같이 랜덤으로 선택된 조합이 표시됩니다.

만약 이걸 좀 더 가지런히 하고 싶다면,

    print( (' %2d ' * 6) % tuple(arr_selected) )

위와 같이 서식화해서 출력할 수 있습니다. 앞의 (' %2d ' * 6)' %2d '(2글자 폭의 숫자형)를 6번 반복하는 의미이며, % 뒤의 tuple(arr_selected)은 추려낸 6개의 숫자 배열 arr_selected를 튜플화시키는 함수입니다. 실행하면

  6  10  11  18  32  43 
 13  28  33  34  37  44 
  8  11  13  17  21  40 
  1   6  29  36  37  44 
  3  14  29  32  39  42 

이렇게 가지런하게 출력됩니다.

[2017. 11. 21. 추가] 랜덤 모듈의 sample 함수를 이용해도 같은 결과를 얻을 수 있습니다.

import random
 
gen_count = 5  # 생성할 개수
 
for x in range(0, gen_count):
    arr_selected = random.sample(range(1, 46), 6 )  # 생성
    arr_selected.sort()               # 선택된 번호를 정렬
    print( (' %2d ' * 6) % tuple(arr_selected) )    # 출력

이 코드의 결과도 앞의 코드와 동일합니다.

“파이썬으로 로또 번호 생성기 만들기”의 4개의 생각

    1. 댓글 감사합니다.

      이 사이트는 PHP 기반이며, 무지개색 링크는 CSS와 자바스크립트를 이용하였습니다.

  1. 초보자이지만 그래도 이렇게 소스가 있으니
    따라하면서 공부할 수 있겠네요ㅎ
    좋은 소스 정말 감사합니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다