해당 포스트는 R에서 난수 추출 방식을 이용하여 로또 게임 함수를 만드는 방법에 대해 소개합니다.
INTRO
처음 프로그래밍을 공부하던 시기에는 다양한 이론 공부들보다 실습하는 시간이 좋았고, 그 중에서도 어렵지 않은 게임을 구현하는 실습을 좋아했습니다. 공부한 내용을 기반하여 결과를 출력하는 완성된 코드를 작성했다는 성취감도 있었지만, 아직은 부족하지만 (많이) 보완 된다면 실제 생활에 활용 가능한 결과물 될 수 있다는 것에 성취감을 더 크게 느꼈던 것 같습니다.
로또 게임은 목적에 따라 좀 더 현실감있게 만들 수 있겠지만, 아래에서는
질문
R프로그래밍 질문 2) 로또 함수 만들기
풀이
로또 함수는 목표 수준에 따라 다양한 구현 방식이 존재할 수 있습니다. 시뮬레이션 함수를 만들수도 있고, 보너스 번호 개념을 적용할 수도 있고, 기존 등장 확률을 활용하여 나만의 로또 함수를 만들수도 있습니다.
하지만 아래에서는 R프로그래밍 입문자를 대상으로 설명하기 위한,
- 사용자 함수
lotto()
생성 lotto()
함수를 실행하면 1부터 45까지의 번호 중 6개 출력 (중복이 없어야 함)
1.사용자 함수 lotto()
생성
R에서 사용자 함수를 생성하는 방법은 function()
함수를 이용하면 됩니다.
lotto <- function(){
print("로또 번호 6개를 출력합니다.")
}
lotto()
[1] "로또 번호 6개를 출력합니다."
2. lotto()
함수를 실행하면 1부터 45까지의 번호 중 6개 출력 (중복이 없어야 함)
R에서 랜덤값을 추출해 주는 함수는 sample()
함수가 있으며, 추출 대상 숫자의 범위, 개수, 복원/비복원 유무, 추출 확률 등을 옵션에서 조정할 수 있습니다.
sample(x, size, replace = FALSE, prob = NULL)
- x : 추출 대상이 되는 숫자의 범위
- size : 추출하려는 숫자의 개수
- replace : 복원/비복원 여부 (TRUE = 복원 추출, FALSE = 비복원 추출)
- prob : x의 각 숫자별 추출 확률 지정
아래 sample()
함수를 말로 설명한다면 아래와 같습니다.
1:45
의 숫자에서6
개의 숫자를 랜덤 추출하는데, 추출 방식은 비복원 추출(replace = FALSE
) 방식으로 한다.
lotto <- function() {
print("로또 번호 6개를 출력합니다.")
lotto_list <- sample(1:45, 6, replace = FALSE)
return(lotto_list[order(lotto_list)])
}
> lotto() [1] "로또 번호 6개를 출력합니다." [1] 1 6 8 13 19 40 > lotto() [1] "로또 번호 6개를 출력합니다." [1] 1 28 30 38 40 45 > lotto() [1] "로또 번호 6개를 출력합니다." [1] 7 14 21 34 39 43 > lotto() [1] "로또 번호 6개를 출력합니다." [1] 3 14 16 21 33 34
참고로, 위 함수는 랜덤 추출 방식이기에 실행할 때마다 다른 결과가 출력됩니다.
마무리
R프로그래밍을 공부하면서 배운 내용 기반으로 간단한 게임을 기본적인 부분부터 만들어 본다면,
관련 링크
[1] 네이버 지식인