- [R] set.seed( )함수, replace = True or Fale2024년 01월 22일 17시 51분 52초에 업로드 된 글입니다.작성자: Type-유
R언어 공부를 하다보면, "set.seed(숫자)" 함수가 종종 보인다.
처음에는 무슨 의미가 있는지 잘 몰랐다. set.seed()를 하지 않아도 난수 생성 함수는 잘 작동하기 때문이다.
(사실 아직도 모르겠다. 그냥 개념만 이해했을 뿐... 나중에 실습예제나 프로젝트를 하면서 익혀질 것으로 기대한다.)
프로그래밍에서 난수를 생성하기 위해서는 그냥 우리(인간)이 생성하는 머릿속에서 그야말로 랜덤하게 떠올리는 숫자를 떠올리는 것처럼 뿅하고 튀어나오는 것이 아니다. 즉, 숫자가 랜덤하게 튀어나오게 하기 위한 방식이 필요하다.
이때, 기준으로 잡는 숫자(seed)가 필요한 모양이다. seed에 무엇을 입력하느냐에 따라서 난수 생성식의 뿌리가 달라지는 것이다. 물론 이외에도 생성하는 난수의 크기와 데이터 구조도 영향을 미치는 듯 한다. 아래의 예제 코드를 보면 조금 더 이해가 될 것으로 기대한다.
# seed를 0으로 설정 > set.seed(0) > sample(10,replace = TRUE) [1] 9 4 7 1 2 7 2 3 1 5 > sample(3, replace = TRUE) [1] 1 2 2 > sample(3, replace = TRUE) [1] 2 2 3 # seed를 0으로 재설정 > set.seed(0) > sample(10, replace = TRUE) [1] 9 4 7 1 2 7 2 3 1 5 > sample(10,replace = TRUE) [1] 5 10 6 10 7 9 5 5 9 9 # seed를 0으로 재설정 2 > set.seed(0) > sample(5, replace = TRUE) [1] 1 4 1 2 5 # -> 난수 생성 조건이 다르면 다른 난수가 생성되는 듯하다. > sample(10, replace = TRUE) [1] 7 2 3 1 5 5 10 6 10 7"replace = TRUE"는 왜 해주는 것일까?
확률과 통계시간에 '복원 추출'과 '비복원 추출'을 들어본 적이 있다. 이때 '복원 추출'을 영어로 'sampling with replacement'라고 한다. 그렇다. sample()함수에서 replace는 복원 추출을 할 지, 비복원 추출을 할 지 선택하는 것이다. 즉, 'replace = True'로 설정하는 경우에는 복원 추출을(sample의 중복 허용), 'replace = False'로 설정하는 경우에는 비복원 추출을(sample의 중복 불허) 적용하게 되는 것이다. 아래의 예제 코드는 이에대한 이해를 도울 것으로 기대한다.
# 기본적으로 sample 함수는 "replace = FALSE"로 초기화가 되어있는 상태이다. > sample(30) [1] 26 4 18 1 20 28 12 24 6 19 16 17 25 21 22 11 2 23 15 29 7 3 10 5 27 8 14 30 9 13 # replace = False로 중복되는 숫자가 없다. > sample(30) [1] 10 9 21 17 27 24 13 15 20 5 23 14 19 25 8 2 7 22 3 30 26 29 11 6 16 1 12 18 4 28 # 역시 없다. # replace = TRUE의 경우 > sample(30,replace = TRUE) [1] 4 30 14 27 6 15 10 26 29 10 6 19 11 18 30 8 26 9 14 19 12 29 14 1 5 16 21 22 18 22 # 6, 26, 30, 14, 22 등 중복되는 숫자가 존재한다.'IT > 프로그래밍 언어' 카테고리의 다른 글
[R] binding & array (1) 2024.01.25 [R] apply() 계열 함수 (1) 2024.01.22 [R] 조건문 (0) 2024.01.21 [R] 지역 할당과 슈퍼 할당 (1) 2024.01.21 [R] 변수와 함수 할당, round( )함수 (1) 2024.01.21 다음글이 없습니다.이전글이 없습니다.댓글