파이썬의 랜덤 모듈을 이용하여 연금복권 번호 생성기를 구현하겠습니다.
연금복권 알아보기
https://dhlottery.co.kr/gameInfo.do?method=game720Guide&wiselog=H_B_5_1
연금복권720+ 사이트에 들어가보면 연금복권에 대한 설명이 있습니다.
연금복권은 조를 선택하고, 6자리 번호를 선택하는 복권으로 조는 1조부터 5조까지, 각 6자리는 0부터 9까지 숫자 중 선택하는 방식입니다.
결과적으로 이용하여 7개의 숫자를 생성하면 되는데, 각 자리수별로 다른 랜덤함수를 이용하여 숫자를 생성해보겠습니다.
randint() 함수를 이용한 조 선택
우선은 random 모듈을 import 합니다.
import random
randint() 함수를 이용하면 2개의 숫자 사이의 랜덤 정수를 생성할 수 있습니다.
즉 첫번쨰 인자부터 두번쨰 인자 사이의 랜덤한 수를 리턴합니다.
1조 부터 5조까지 선택하는 것이기 때문에 1,5 사이의 정수를 리턴하도록 합니다.
rand_jo = random.randint(1,5)
random() 함수를 이용한 첫번째 숫자 선택
각 자리는 0 부터 9까지의 숫자 중 선택하면 됩니다. 각 자리별로 각기 다른 랜덤함수를 이용하여 0 부터 9까지의 숫자를 리턴하도록 코드를 구현해보겠습니다.
random() 함수는 0 부터 1 사이의 실수를 리턴하는 함수 입니다. 우리는 0부터 9까지의 정수를 얻어야 하기 때문에 random 함수의 결과에 9를 곱한 뒤 정수형으로 형변환 시키면 0 부터 9까지의 정수를 구할 수 있습니다.
rand_1 = int(random.random() * 9)
randrange() 함수를 이용한 두번째 숫자 선택
두번째 숫자는 randrange() 함수를 이용해서 구해보겠습니다. randrange() 함수는 3개의 인자를 입력받는 함수로 (start, stop, step으로 start부터 stop 사이에 step으로 만들어지는 정수 중 하나를 리턴합니다. step에 1을 주면 start 부터 stop 사이의 모든 정수이고, 2이면 짝수, 3이면 3의 배수와 같이 step에 따라서 값을 결정할 수 있습니다.
0,9,1을 인자로 주면 0 부터 9 사이의 정수를 랜덤하게 생성해줍니다.
rand_2 = random.randrange(0,9,1)
uniform() 함수를 이용한 세번째 숫자 선택
uniform() 함수는 두 인자 사이의 랜덤한 실수를 리턴하는 함수 입니다. 0 부터 9까지의 정수를 얻기 위해서는 리턴된 값을 정수로 형변환을 시켜주면 됩니다.
rand_3 = int(random.uniform(0,9))
choice() 함수를 이용한 네번째 숫자 선택
choice() 함수는 인자로 받은 원소 중 하나를 선택해주는 함수로 문자 중 하나를 랜덤하게 선택하는 경우 주로 사용합니다. 그렇기 때문에 0 부터 9까지의 문자열을 인자로 넣고 마지막에 정수로 형변환을 하면 0 부터 9까지의 정수를 구할 수 있습니다. 참고로 추가적으로 계산이 필요한 경우가 아니라면 굳이 정수형으로 형변환을 시키지 않아도 관계없습니다.
rand_4 = int(random.choice('0123456789'))
sample() 함수를 이용한 다섯번째 숫자 선택
sample() 함수는 첫인자로 받은 값 중 두번째 인자로 받은 값만큼 랜덤으로 추출해주는 랜덤함수 입니다. 0 부터 9를 원소로 갖는 리스트를 인자로 넘겨준 뒤 1개의 값을 뽑도록 하면 우리가 원하는 0 부터 9까지의 정수 중 하나의 값을 추출하는 기능을 구현할 수 있습니다.
rand_5 = int(random.sample([0,1,2,3,4,5,6,7,8,9], 1)[0])
shuffle() 함수를 이용한 여섯번째 숫자 선택
마지막 숫자는 shuffle() 함수를 이용해보겠습니다. shuffle() 함수는 인자로 받은 값의 순서를 섞는 랜덤함수 입니다. 0 부터 9까지 숫자를 순차적으로 갖는 리스트를 인자로 준 뒤 shuffle()로 섞고 첫번째 인자를 선택하면 랜덤하게 하나의 값을 선택하는 효과를 낼 수 있습니다.
numbers = [0,1,2,3,4,5,6,7,8,9]
random.shuffle(numbers)
print (numbers[0])
다양한 랜덤함수를 이용하여 연금복권의 7개 숫자를 생성해주는 연금복권 생성기를 구현해보았습니다.
마지막으로 전체 코드와 실행 결과를 보여드리면서 포스팅을 마치겠습니다.
import random, datetime
print (datetime.datetime.now())
rand_jo = random.randint(1,5)
rand_1 = int(random.random() * 9)
rand_2 = random.randrange(0,9,1)
rand_3 = int(random.uniform(0,9))
rand_4 = int(random.choice('0123456789'))
rand_5 = int(random.sample([0,1,2,3,4,5,6,7,8,9], 1)[0])
numbers = [0,1,2,3,4,5,6,7,8,9]
random.shuffle(numbers)
print (rand_jo, '조', rand_1, rand_2, rand_3, rand_4, rand_5, numbers[0])
Comment