더북(TheBook)

각각의 무작위 이동 이 계산의 핵심은 변환 행렬에 정의된 무작위 이동이다. page 변수는 서퍼의 현재 위치를 담고 있다. p[page][j] 요소는 서퍼가 페이지 page에서 페이지 j로 이동할 확률이다. 즉, 우리가 할 일은 서퍼가 page에 있을 때 변환 행렬의 page 행에 정의된 분산에 따라 0n-1 사이의 난수를 생성하는 것이다(p[page]n-1개의 요소를 가진 배열이다). 어떻게 하면 이 난수를 생성할 수 있을까? random.random() 함수를 사용하면 01 사이의 실수형 난수를 생성할 수 있지만, 이것을 이용해 어떻게 무작위로 다른 페이지로 이동할 수 있을까? 한 가지 가능한 방법은 (0, 1) 사이를 n개의 구간으로 나누고, 변환 행렬의 page 행에 있는 확률에 맞게 구간 길이를 설정하는 것이다. 그러면 난수 변수인 r은 확률만큼의 길이를 가진 각 구간 중 하나에 들어가게 된다. 이 방법을 코드로 표현하면 다음과 같다.

total = 0.0
for j in range(0, n)
    total += p[page][j]
    if r < total:
        page = j
        break

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