파이썬의 랜덤 모듈을 이용해서 로또 번호를 생성하는 프로그램을 만들어 봅시다.
코드는 다음과 같습니다.
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) ) # 출력
이 코드의 결과도 앞의 코드와 동일합니다.
이 사이트 파이썬으로 꾸미신건가요? 알록달록하니 이쁘네요 정보 감사합니다.
댓글 감사합니다.
이 사이트는 PHP 기반이며, 무지개색 링크는 CSS와 자바스크립트를 이용하였습니다.
초보자이지만 그래도 이렇게 소스가 있으니
따라하면서 공부할 수 있겠네요ㅎ
좋은 소스 정말 감사합니다.
감사합니다! ?
좋은 자료네용! 감사합니디!
감사합니다! ?
좋은 정보네요! 감사합니다.
감사합니다! ?