본문 바로가기
파이썬

파이썬 random 패키지로 로또번호 뽑기 코드작성

by ㈜㎹Ω∞ 2022. 7. 14.
728x90

파이썬의 기본패키지인 random모듈을 이용해서 로또번호를 뽑는 코드를 작성해보겠습니다. 일단 굉장히 쉽고 간단하기 때문에 큰 어려움 없이 작성 가능합니다. 코드 작성은 "1~45의 숫자 중 무작위로 6개의 숫자를 뽑는다." 이렇게만 작성하면 되니깐요. 근데 보통 로또 구매할 때 5천원씩 구매하니깐 6개씩 5개의 번호를, 그러니깐 총 30개의 번호를 추출하는 코드를 작성하겠습니다.

 

사용하는 함수는

random패키지의 sample() 함수입니다. sample() 함수는 여러 개의 원소를 무작위로 추출합니다. 중복적인 숫자가 안 나오기 때문에 로또번호 뽑기에 안성맞춤입니다. 참고로 함수는 2종류로 보여드릴 건데요, 첫 번째 방법은 하나하나 입력해서 코드 작성하는 방법입니다.

 

### 하나하나입력하는 방법

import random

com=range(1,46)
count=0
size=6

a=random.sample(com,size)
a.sort()
b=random.sample(com,size)
b.sort()
c=random.sample(com,size)
c.sort()
d=random.sample(com,size)
d.sort()
e=random.sample(com,size)
e.sort()

print(a,b,c,d,e)

 

첫 번째 코드는 보시다시피 a, b, c, d, e라는 변수에 똑같은 코드를 입력해서 쓸데없이 코드가 길어졌습니다. 이렇게 작성해도 실행하는데 큰 문제는 없지만 깔끔하지도 않고, 노가다 형식이죠. 로또번호 뽑기처럼 짧은 코드 작성이라면 상관없지만 긴 함수를 작성할 때 이러고 있으면 속 터지겠죠.. 우린 여러 함수를 배웠고, 코드는 짧을수록 좋습니다.

 

### 해석

import random	### random모듈불러옴

com=range(1,46)	### 숫자는 1부터 45까지 입니다.
size=6	### 몇개의 수를 뽑을지 정합니다.

### random모듈의 sample함수를 사용해서
### 1부터 45까지 6개의 숫자를 출렵합니다.
### sort()함수를 써서 숫자를 낮은순으로 정렬합니다.
a=random.sample(com,size)	
a.sort()
b=random.sample(com,size)
b.sort()
c=random.sample(com,size)
c.sort()
d=random.sample(com,size)
d.sort()
e=random.sample(com,size)
e.sort()

print(a,b,c,d,e)	### a,b,c,d,e 출력합니다.

 

위에는 하나하나 작성하는 방법과 해석이고, 밑에는 두 번째 방법인 간단하게 입력해서 코드 작성하는 방법과 해석입니다.

 

 

### 짧게 작성하는 방법

import random

com=range(1,46)
count=0
size=6

while 5 > count:
    count+=1
    a=random.sample(com,size)
    a.sort()
    print(a)

 

하나하나 작성하는 코드에 비해서 훨씬 간단해 보이는 코드입니다. 15줄이였던 함수들이 10줄 정도로 줄어들었어요. 결과는 같지만 변수 하나하나 작성하는 방법에서 while문을 사용해서 반복하는 방법으로 변경했습니다. 로또번호 뽑는 함수의 경우는 random패키지와 import, 반복문만 잘 이해했다면 아주 손쉽게 작성 가능합니다.

 

### 해석

import random

com=range(1,46)	### 1부터45까지의 숫자
count=0	### 몇번을 반복할지 정합니다.
size=6	### 몇개뽑을지 정합니다.

### random모듈의 sample함수를 사용해서
### 1부터 45까지 6개의 숫자를 출렵합니다.
### sort()함수를 써서 숫자를 낮은순으로 정렬합니다.
while 5 > count:	### 5번을 반복합니다.
    count+=1	### 한번반복할때마다 count가 1추가됩니다.
    ### random모듈의 sample함수를 사용해서
    ### 1부터 45까지 6개의 숫자를 출렵합니다.
    a=random.sample(com,size)
    a.sort()	### 숫자를 낮은순으로 정렬합니다.
    print(a)	### a출력합니다.
728x90

댓글