더북(TheBook)

13.7 무작위 단어

히스토그램에서 단어를 무작위로 선택하는 가장 간단한 알고리즘은 관찰된 빈도만큼 각 단어의 사본을 갖는 리스트를 만들고, 이 리스트에서 단어를 선택하는 것이다.

def random_word(h):

t = []

for word, freq in h.items():

t.extend([word] * freq)

 

return random.choice(t)

표현식 [word] * freq는 문자열 word의 복제본을 freq만큼 갖는 리스트를 생성하게 한다. extend 메서드는 인수가 시퀀스인 점을 제외하면 append와 비슷하다.

이 알고리즘으로도 동작하지만, 그다지 효율적이지는 않다. 무작위 단어를 선택할 때마다 리스트를 재구축해야 하는데, 이 리스트가 원본 책만큼이나 크다. 리스트를 한 번만 구축하고, 선택을 여러 번 할 수 있다면 확실하게 성능이 개선되지만, 여기에는 여전히 리스트가 크다는 문제가 남는다.

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