시즌 1 · 알파고편 / PART 3 · PART 3 · 무작위의 힘: MCTS / Ch 1 · 몬테카를로 시뮬레이션 (rollout)

코드: 무작위 게임 1번 + 승자 판정

rollout() 함수가 핵심:

def rollout(game):
    while game.winner() is None:
        moves = game.possible_moves()
        pos = random.choice(moves)   # ← 무작위 한 수
        game = game.play(pos)
    return game.winner()

한 번 실행은 의미 없음. 어쩌다 X 이기고, 어쩌다 O 이기고, 가끔 draw. 5번 돌리면 결과가 다 다름. 사람이 보면 "이게 뭐 하는 거야?" 싶음.

💡 그러나 1000번 평균은?

틱택토 빈 보드에서 무작위로 끝까지 두면 X가 약 59%, O가 약 29%, 무승부 약 12% 정도 나옴 (X가 선수라 약간 유리). 같은 자리(빈 보드)에서 항상 같은 비율.

이게 통계적 신호. 자리마다 이 비율이 다름. 좋은 자리는 비율이 높음.

다음 페이지에서 정말 그런지 측정해보자.

PYTHON