Menu
CoddyTech

기댓값

Coddy Machine Learning 여정의 머신러닝을 위한 통계 섹션에 포함된 레슨. 64개 중 16번째.

복권: 70%는 아무것도 당첨되지 않고, 25%는 5달러, 5%는 20달러에 당첨됩니다. 이 복권의 가치는 얼마일까요?

복권 당첨금 0, 5, 20달러를 나타내는 세 개의 막대와 각각의 당첨 확률 0.7, 0.25, 0.05. 막대는 시소처럼 보 위에 놓여 있으며, 기댓값인 2.25 지점의 삼각형을 받침점으로 균형을 이룹니다.

각 상품에 당첨 확률을 곱하고 더하면 기댓값, 즉 차트의 균형점이 됩니다:

prizes = np.array([0, 5, 20])
chances = np.array([0.7, 0.25, 0.05])
print((prizes * chances).sum())

이는 2.25를 출력합니다. 장기 평균이며, 실제로 그 금액을 지급하는 티켓은 없습니다. rng.choice에 p=를 사용하면 해당 확률에 따라 티켓을 추첨합니다.

rng = np.random.default_rng(1)
tickets = rng.choice(prizes, size=10000, p=chances)
print(tickets.mean())

이것은 2.298을 출력합니다. 티켓당 3달러일 때 구매자는 0.75를 손해 봅니다. 새 데이터에 대한 모델의 평균 오차도 기댓값입니다.

challenge icon

챌린지

중급

놀이공원 룰렛은 prizes에 있는 토큰을 지급하며, 각 구역의 당첨 확률은 chances에 있습니다. 기본 코드는 룰렛을 4000번 돌려 결과를 spins에 저장했습니다. 프로그램은 한 번 돌리는 데 드는 가격을 입력받습니다.

  1. 기댓값에 해당하는 당첨금을 출력한 다음, 시뮬레이션한 평균을 소수점 2자리까지 출력하세요.
  2. 장기적으로 플레이어가 한 번 돌릴 때마다 이익을 얻는지 손해를 보는지와 그 금액을 출력하세요.

다른 룰렛과 가격이 1.5인 경우:

Expected prize: 1.1 tokens
Simulated average: 1.08 tokens
A player loses 0.4 tokens a spin

직접 해보기

import numpy as np

price = float(input())

# 룰렛의 각 구역에서 받을 수 있는 상금(토큰 단위)과 당첨 확률
prizes = np.array([0, 1, 4, 10])
chances = np.array([0.5, 0.3, 0.15, 0.05])

# 아래 줄은 변경하지 마세요: 시뮬레이션된 회전 4000회
rng = np.random.default_rng(9)
spins = rng.choice(prizes, size=4000, p=chances)

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

머신러닝을 위한 통계의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러