주사위를 던져서 얻은 눈의 수의 합이 n이상이 되기 위해 던져야 하는 횟수의 기댓값
1부터 6까지 6면 주사위를 1번 던져 나온 눈의 수만큼 사탕을 받는다고 하자.
사탕을 적어도 n개 이상 받기 위해 던져야하는 횟수의 기댓값은?
n = 1이면 1번만 던져도 사탕을 1개 이상 받으므로 1번
--------------------------------------------------------------------------------------------------------------------------------------
통계적?으로 접근할려고하면 굉장히 어렵다
확률변수 X를 먼저 정의하고
X = 사탕을 n개 이상 받기 위해 던져야하는 횟수
P(X = 1), P(X = 2), ...을 구한다음 xP(X = x)의 합을 구하면 될텐데
문제는 P(X = 1) 이런건 어떻게 구하냐 이거지
예를 들어 n = 1이면 P(X = 1)은 얼마임? 100%인가? 그러면 P(X = 2)는??
하루종일 고민했는데 모르겠더라고
다이나믹 프로그래밍으로 직관적으로 푸는게 있는데
합이 N이상이 되기 위해 던져야하는 횟수의 기댓값을 DP[N]으로 정의하면
DP[N] = 1 + (DP[N-1] + DP[N-2] + ... + DP[N-6])/6이다
N-1, N-2,...,N-6에서 주사위 1번을 던져야 N이 될 것이고 각각은 1/6의 확률로 등장하기 때문이라는데
직관적으로 맞긴한데
통계학과 자존심에 왜 되는지 고민해봤는데 합리적인 대답을 찾았다
'The Law of total expectation'이라는 법칙이 있다
E(X) = E(E(X|Y))
이 식은 바꿔쓰면 다음과 같다
E(X|Y = y)는 Y = y에 대한 확률변수이므로 $E( E(X|Y = y) ) = \sum_{y}^{} P(Y = y) E(X|Y = y) = E(X)$
X가 합이 적어도 N에 도달하기 위해 던져야하는 횟수라고 하자
주사위를 1번 던지는 사건 Y = y라고 정의하면 X | Y = y는 1번 던졌더니 주사위의 눈이 y일때 N에 도달하기 위한 횟수이므로
1 + (N - y에 도달하기 위한 횟수)와 같으니 $E(X) = \sum_{y}^{6} P(Y=y)E(X|Y=y)$에서
E(X)는 합이 적어도 N이상이기 위해 던져야하는 횟수 DP[N]
E(X|Y = y)는 합이 적어도 N - y이상이기 위해 던져야하는 횟수 DP[N-y]
P(Y = y) = 1/6이므로
$DP[N] = \sum_{y}^{6} 1/6*(1+DP[N-y]) = 1/6 * (6+DP[N-1] + DP[N-2] + ... + DP[N-6])$
따라서
$$DP[N] = 1 + (DP[N-1] + ... + DP[N-6])/6$$
n = int(input())
E = [0]*(n+1)
for i in range(1,n+1):
v = 0
for j in range(1,7):
if i-j >= 0:
v += E[i-j]
E[i] = 1 + v/6
print(E[n])
'알고리즘 > 확률론 알고리즘' 카테고리의 다른 글
모든 부분집합 원소의 곱의 합을 구하는 공식이 있다고? (0) | 2023.08.20 |
---|---|
확률론 - 5000!개의 거리의 합의 평균을 구하는 방법 (0) | 2023.06.03 |