컴퓨터 프로그램에서 발생하는 난수는 엄밀한 의미에서 난수가 아닙니다.
특정 시작 숫자를 정해주면 컴퓨터의 정해진 알고리즘에 의해서 마치 난수처럼 보이는 수열을 생성하게 됩니다.
이때 시작하는 숫자가 seed인 셈이죠.
따라서 동일한 시작 숫자를 설정하면, 동일한 난수 생성 패턴이 나타나게 됩니다.
우리가 작성한 코드에 대해 동일한 결과 재현에 활용할 수 있습니다.
여기서 가장 중요한 것은 알고리즘의 미묘한 성능 차이를 확인해야하는 경우에 데이터의 특성에 따른 차이를
제어할 수 있도록 해야하는 점 입니다.
아래에 있는 예시코드를 보겠습니다.
import numpy as np
import random
np.random.seed(42)
# 대한민국 외국인 비율이 33%인 5000명의 인구 데이터 생성
students_data = np.random.choice([0, 1], size=5000, p=[.67, .33])
students_data
# array([0, 1, 1, ..., 0, 1, 0])
위 코드처럼 np.random.seed()를 정해주면 함수를 몇번을 실행하여도 array의 형태는 동일하게 나오게 됩니다.
위의 예시처럼 데이터 샘플의 모집단 데이터를 만들 때 정말 좋게 활용할 수 있습니다.
감사합니다.
'Why?' 카테고리의 다른 글
A/B TEST 진행 시 대조군과 실험군의 비율을 비슷하게 맞추는 이유는? (0) | 2023.08.23 |
---|---|
왜 제너레이터는 메모리 사용을 효과적으로 사용할까? (0) | 2023.05.15 |
머신러닝과 비교했을 때, 딥러닝이 가지고 있는 장단점은? (0) | 2023.05.15 |
왜 Cloud 방식으로 데이터를 저장할까? (0) | 2023.05.15 |
PDP의 해석 시 유의할 점 (0) | 2023.05.15 |