더북(TheBook)

이와 같이 샘플링하는 방식은 선거, 과학 연구 등의 분야에서 통계적으로 연구하기 위한 기반으로 널리 사용된다. 통계 분석은 아주 커다란 모집단에서 소규모의 무작위 샘플을 분석해 전체 모집단에 대해 어떤 결론을 내린다. 파이썬은 random 모듈에서 샘플링에 사용하기 위한 표준 함수를 제공한다. 배열 a[]와 정수 k가 있을 때, random.sample(a, k) 함수를 호출하면 a[]에서 균일한 확률로 골라낸 k개의 요소를 담은 배열을 새로 만들어 반환한다.

미리 계산된 값들 배열은 한 번 계산한 값을 저장해 나중에 다시 사용하기 위해 쓰이기도 한다. 예를 들어 조화급수([프로그램 1.3.5] 참조)를 계산하는 프로그램을 만든다고 생각해보자. 다음과 같이 값을 저장해 놓으면 효율적으로 계산할 수 있다.

harmonic = stdarray.create1D(n+1, 0.0)
for i in range(1, n+1):
    harmonic[i] = harmonic[i-1] + 1.0/i

여기에서 harmonic[1]을 첫 번째 조화수 1.0, harmonic[i]i번째 조화수에 대응시키기 위해 배열의 첫 번째 요소(0번 인덱스)를 사용하지 않고 낭비하고 있음에 주의하자. 이와 같이 값을 미리 계산해 놓는 방식은 공간-시간 타협(space–time tradeoff)의 한 예이다. (값을 저장할) 공간에 투자하면 (그 값을 다시 계산하기에 필요한) 시간을 절약할 수 있기 때문이다. n 값이 아주 크면 이 방법은 비효율적이지만, 작은 n으로 구한 값을 여러 번 사용할 때는 상당히 효율적이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.