게임이 최소한 2 점의 마진으로 이기기 위해 "시간외"로 갈 것이라는 전망으로 인해 분석이 복잡합니다. (그렇지 않으면 https://stats.stackexchange.com/a/327015/919에 표시된 솔루션만큼 간단합니다 .) 문제를 시각화하고이를 사용하여 쉽게 계산할 수있는 기여로 나누는 방법을 보여 드리겠습니다. 대답. 약간 지저분하지만 결과는 관리 가능합니다. 시뮬레이션은 정확성을 나타냅니다.
하자 점을 승리의 확률합니다. p 모든 점이 독립적이라고 가정하십시오. 초과 근무를하지 않거나 ( ) 초과 근무를한다고 가정 할 때 상대방이 몇 점을 가졌는지에 따라 게임에서 이길 확률은 (겹치지 않는) 이벤트로 분류 될 수 있습니다. . 후자의 경우 어떤 단계에서 점수가 20-20임을 알 수 있습니다.0,1,…,19
멋진 시각화가 있습니다. 게임 중 점수를 포인트 여기서 는 점수이고 는 상대 점수입니다. 게임이 전개됨에 따라 점수는 에서 시작하는 1 사분면의 정수 격자를 따라 이동 하여 게임 경로를 만듭니다. 당신 중 하나가 이상을 기록하고 이상의 마진을 가질 때 처음 종료됩니다 . 이러한 승점은 게임 경로가 끝나야하는이 프로세스의 "흡수 경계"라는 두 세트의 포인트를 형성합니다.x y ( 0 , 0 ) 21 2(x,y)xy(0,0)212
이 그림은 초과 근무 시간 (경고 손실)과 함께 흡수 경계 (무한 위와 오른쪽으로 확장)의 일부를 보여줍니다.
세어 보자. 게임으로 종료 할 수있는 방법의 수 상대에 대한 포인트의 정수 격자 별개의 경로의 수 초기 점수에서 시작 점수 끝에서 두 번째 점수에 종료하고 . 이러한 경로는 게임에서이긴 포인트 중 어느 것에 의해 결정됩니다 . 따라서 숫자 의 크기 의 하위 집합에 해당 하며 이 있습니다. 이러한 각 경로에서 당신은 포인트를 얻었고 ( 매번 독립적 인 확률로 , 최종 포인트를 세어) 상대는 이겼습니다.( x , y ) ( 0 , 0 ) ( 20 , y ) 20 + y 20 1 , 2 , … , 20 + yy(x,y)(0,0)(20,y)20+y201,2,…,20+y(20+y20)21py 점 ( 매번 독립 확률이 인 경우), 와 연관된 경로 는1−py
f(y)=(20+y20)p21(1−p)y.
마찬가지로 20-20 타이를 나타내는 방법이 에 도달 합니다. 이 상황에서는 확실한 승리가 없습니다. 공통 컨벤션을 채택하여 승리 가능성을 계산할 수 있습니다. 지금까지 득점 한 점수를 잊고 포인트 차이를 추적하기 시작합니다. 게임의 차이는 이며 처음 또는 도달하면 종료 되며 반드시 경로를 따라 을 통과해야 합니다. 보자 는 차동 때 이길 수있는 기회가 될 .(20+2020)(20,20)0+2−2±1g(i)i∈{−1,0,1}
어떤 상황에서도 승리 할 수있는 기회는 이므로p
g(0)g(1)g(−1)=pg(1)+(1−p)g(−1),=p+(1−p)g(0),=pg(0).
벡터 대한이 선형 방정식 시스템의 고유 한 솔루션은 다음을 의미합니다.(g(−1),g(0),g(1))
g(0)=p21−2p+2p2.
그러므로 이것은 에 도달 하면 이길 확률입니다 ( ).(20,20)(20+2020)p20(1−p)20
결과적으로 이길 확률은 이러한 모든 분리 가능성의 합입니다.
==∑y=019f(y)+g(0)p20(1−p)20(20+2020)∑y=019(20+y20)p21(1−p)y+p21−2p+2p2p20(1−p)20(20+2020)p211−2p+2p2(∑y=019(20+y20)(1−2p+2p2)(1−p)y+(20+2020)p(1−p)20).
오른쪽 괄호 안의 내용은 의 다항식입니다 . (도는 인 것처럼 보이지만 주요 용어는 모두 취소됩니다. 도는 입니다.)p2120
때 , 승리의 기회는 가까운p=0.580.855913992.
이 분석을 여러 포인트로 끝나는 게임으로 일반화하는 데 아무런 문제가 없습니다. 필요한 마진이 보다 크면 결과는 더 복잡해 지지만 간단합니다.2
덧붙여서 , 이길 수있는 기회와 함께, 당신은 처음 번의 게임 에서 확률을 가졌 습니다. 이는 귀하가보고 한 내용과 일치하지 않으므로 각 포인트의 결과가 독립적이라고 가정 할 수 있습니다. 따라서 우리는 당신이(0.8559…)15≈9.7%15
(0.8559…)35≈0.432%
이 모든 가정에 따라 진행한다고 가정 하고 나머지 게임을 모두이기는 것 . 보수가 크지 않는 한 좋은 내기처럼 들리지 않습니다!35
빠른 시뮬레이션으로 이와 같은 작업을 확인하고 싶습니다. 다음은 R
1 초에 수만 개의 게임을 생성하는 코드입니다. 그것은 게임이 126 포인트 안에 끝날 것이라고 가정합니다.
n <- 21 # Points your opponent needs to win
m <- 21 # Points you need to win
margin <- 2 # Minimum winning margin
p <- .58 # Your chance of winning a point
n.sim <- 1e4 # Iterations in the simulation
sim <- replicate(n.sim, {
x <- sample(1:0, 3*(m+n), prob=c(p, 1-p), replace=TRUE)
points.1 <- cumsum(x)
points.0 <- cumsum(1-x)
win.1 <- points.1 >= m & points.0 <= points.1-margin
win.0 <- points.0 >= n & points.1 <= points.0-margin
which.max(c(win.1, TRUE)) < which.max(c(win.0, TRUE))
})
mean(sim)
내가 이것을 실행했을 때, 당신은 10,000 번의 반복 중에서 8,570 건을 이겼습니다. 이러한 결과를 테스트하기 위해 Z- 점수 (약 정규 분포)를 계산할 수 있습니다.
Z <- (mean(sim) - 0.85591399165186659) / (sd(sim)/sqrt(n.sim))
message(round(Z, 3)) # Should be between -3 and 3, roughly.
이 시뮬레이션에서 의 값은 전술 한 이론적 계산과 완벽하게 일치합니다.0.31
부록 1
처음 18 게임의 결과를 나열하는 질문에 대한 업데이트를 고려하여, 이러한 데이터와 일치하는 게임 경로의 재구성이 있습니다. 게임 중 두세 개가 손실에 가까웠다는 것을 알 수 있습니다. (연한 회색 사각형으로 끝나는 경로는 손실입니다.)
이 수치의 잠재적 용도는 다음을 관찰하는 것입니다.
부록 2
그림을 작성하는 코드가 요청되었습니다. 여기에 있습니다 (약간 더 멋진 그래픽을 만들도록 정리되었습니다).
library(data.table)
library(ggplot2)
n <- 21 # Points your opponent needs to win
m <- 21 # Points you need to win
margin <- 2 # Minimum winning margin
p <- 0.58 # Your chance of winning a point
#
# Quick and dirty generation of a game that goes into overtime.
#
done <- FALSE
iter <- 0
iter.max <- 2000
while(!done & iter < iter.max) {
Y <- sample(1:0, 3*(m+n), prob=c(p, 1-p), replace=TRUE)
Y <- data.table(You=c(0,cumsum(Y)), Opponent=c(0,cumsum(1-Y)))
Y[, Complete := (You >= m & You-Opponent >= margin) |
(Opponent >= n & Opponent-You >= margin)]
Y <- Y[1:which.max(Complete)]
done <- nrow(Y[You==m-1 & Opponent==n-1 & !Complete]) > 0
iter <- iter+1
}
if (iter >= iter.max) warning("Unable to find a solution. Using last.")
i.max <- max(n+margin, m+margin, max(c(Y$You, Y$Opponent))) + 1
#
# Represent the relevant part of the lattice.
#
X <- as.data.table(expand.grid(You=0:i.max,
Opponent=0:i.max))
X[, Win := (You == m & You-Opponent >= margin) |
(You > m & You-Opponent == margin)]
X[, Loss := (Opponent == n & You-Opponent <= -margin) |
(Opponent > n & You-Opponent == -margin)]
#
# Represent the absorbing boundary.
#
A <- data.table(x=c(m, m, i.max, 0, n-margin, i.max-margin),
y=c(0, m-margin, i.max-margin, n, n, i.max),
Winner=rep(c("You", "Opponent"), each=3))
#
# Plotting.
#
ggplot(X[Win==TRUE | Loss==TRUE], aes(You, Opponent)) +
geom_path(aes(x, y, color=Winner, group=Winner), inherit.aes=FALSE,
data=A, size=1.5) +
geom_point(data=X, color="#c0c0c0") +
geom_point(aes(fill=Win), size=3, shape=22, show.legend=FALSE) +
geom_path(data=Y, size=1) +
coord_equal(xlim=c(-1/2, i.max-1/2), ylim=c(-1/2, i.max-1/2),
ratio=1, expand=FALSE) +
ggtitle("Example Game Path",
paste0("You need ", m, " points to win; opponent needs ", n,
"; and the margin is ", margin, "."))