矩阵不同概率的赌场游戏

问题描述 投票:0回答:2

这是我的任务:

彼得带着 1 美元去赌场。在 p 的机会下,Peter 赢得 1 美元,在 (1-p) 的机会下,他损失 1 美元。这个过程可以看作是一条马尔可夫链。

如果彼得达到 0 美元,他就会破产回家,如果他设法达到 5 美元,他就会高兴地回家。

求当 p= 30%、40%、50%、60% 和 70% 时,Peter 带着 5 美元回家的概率。为每个概率构造矩阵,其中前 4 个状态是瞬态类(1-4 美元),最后两个状态是两个循环状态(0 和 5 美元)。

我的解决方案

使用when_converged 查找每个单独矩阵何时收敛(P^n = P^n+1)。

然后使用 mpow 中的 n 来查看从 1 美元到 5 美元,即从状态 1 到 6 的概率。

这是我的代码:

mpow <- function(P, n) {
    if (n == 0) {
        return(diag(nrow(P)))
    } else if (n == 1) {
        return(P)
    } else {
        return(P %*% mpow(P, n - 1))
    }
}

when_converged <- function(P, tol=0.00005) { 
    n = 1; diff = 1 
    while (diff > tol) { 
        A <- mpow(P, n) 
        B <- mpow(P, n+1) 
        diff <- max(abs(A - B)) 
        n <- n + 1 
    } 
    return(n) 
}


P30 <- matrix(c(0, 0.3, 0, 0, 0.7, 0, 0.7, 0, 0.3, 0, 0, 0, 0, 0.7, 0, 0.3, 0, 0, 0, 0, 0.7, 0, 0, 0.3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)

P40 <- matrix(c(0, 0.4, 0, 0, 0.6, 0, 0.6, 0, 0.4, 0, 0, 0, 0, 0.6, 0, 0.4, 0, 0, 0, 0, 0.6, 0, 0, 0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)

P50 <- matrix(c(0, 0.5, 0, 0, 0.5, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0.5, 0, 0.5, 0, 0, 0, 0, 0.5, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)

P60 <- matrix(c(0, 0.6, 0, 0, 0.4, 0, 0.6, 0, 0.4, 0, 0, 0, 0, 0.6, 0, 0.4, 0, 0, 0, 0, 0.6, 0, 0, 0.4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)

P70 <- matrix(c(0, 0.7, 0, 0, 0.3, 0, 0.7, 0, 0.3, 0, 0, 0, 0, 0.7, 0, 0.3, 0, 0, 0, 0, 0.7, 0, 0, 0.3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)

when_converged(P30, 0.00005)

从 Rstudio 我得知 P30 收敛于 35。

when_converged(P40, 0.00005)

从 Rstudio 我得知 P40 收敛于 37。

when_converged(P50, 0.00005)

从 Rstudio 我得知 P50 收敛于 47。

when_converged(P60, 0.00005)

从 Rstudio 我得知 P60 收敛于 61。

when_converged(P70, 0.00005)

从 Rstudio 我得知 P70 收敛于 79。

mpow(P30, 35)

mpow(P40, 37)

mpow(P50, 47)

mpow(P60, 61)

mpow(P70, 79)

我需要什么帮助

我从 Rstudio 得到的是,对于 mpow(P60, 61) 和 mpow(P70, 79),与 mpow(P50, 47) 和 mpow(P40, 37) 相比,用 5 美元回家的概率变得更小。其中赢得 1 美元的概率较小。这感觉不对。我做错了什么吗? 请尝试使用我的方法来解决它,而不是使用完全不同的代码。

r matrix stochastic-process
2个回答
3
投票

这就是我构建 P30 矩阵的方式......与你的不一样:

> P30 <- matrix(c(1,  0, 0,  0,  0, 0,
+                   0.7, 0, 0.3, 0, 0,  0, 
+                   0,  0.7, 0, 0.3, 0, 0, 
+                   0,  0, 0.7, 0, 0.3, 0,
+                   0,  0,  0,  0.7, 0 , 0.3,                  
+                   0,  0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)
> P30
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]  1.0  0.0  0.0  0.0  0.0  0.0
[2,]  0.7  0.0  0.3  0.0  0.0  0.0
[3,]  0.0  0.7  0.0  0.3  0.0  0.0
[4,]  0.0  0.0  0.7  0.0  0.3  0.0
[5,]  0.0  0.0  0.0  0.7  0.0  0.3
[6,]  0.0  0.0  0.0  0.0  0.0  1.0

请注意,在每一行中,在 0 或 5 状态的情况下,输入列仅发送到其自身,但在其他状态下,它会发送到相邻的输出列。因此,in-1 会转到 out-0 或 out-2。使用列名和行名显示可能更清晰:

> rownames(P30) <- 0:5
> colnames(P30) <- 0:5
> P30
    0   1   2   3   4   5
0 1.0 0.0 0.0 0.0 0.0 0.0
1 0.7 0.0 0.3 0.0 0.0 0.0
2 0.0 0.7 0.0 0.3 0.0 0.0
3 0.0 0.0 0.7 0.0 0.3 0.0
4 0.0 0.0 0.0 0.7 0.0 0.3
5 0.0 0.0 0.0 0.0 0.0 1.0

这可以帮助构建具有不同 P 值的矩阵

 p0 <-  matrix(0, nrow = 6, ncol = 6); p=.30
 p30 <- p0; p30 [cbind(2:5,1:4)] <- 1-p
             p30[cbind(2:5,3:6)] <- p
 p30[ cbind(c(1,1),c(6,6))] <- 1
 p30

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]  1.0  0.0  0.0  0.0  0.0  0.0
[2,]  0.7  0.0  0.3  0.0  0.0  0.0
[3,]  0.0  0.7  0.0  0.3  0.0  0.0
[4,]  0.0  0.0  0.7  0.0  0.3  0.0
[5,]  0.0  0.0  0.0  0.7  0.0  0.3
[6,]  0.0  0.0  0.0  0.0  0.0  1.0

三次迭代后的确定性概率或理论概率(从 state=1 开始:

c(0,1,0,0,0,0) %*% P30 %*% P30 %*% P30
#-----
         0 1     2 3     4 5
[1,] 0.847 0 0.126 0 0.027 0

同意你的观点

mpow

> c(0,1,0,0,0,0) %*% mpow(P30 ,3)
         0 1     2 3     4 5
[1,] 0.847 0 0.126 0 0.027 0

%^%
包中还有一个矩阵幂函数
expm

> c(0,1,0,0,0,0) %*% expm::'%^%'( P30,3)
         0 1     2 3     4 5
[1,] 0.847 0 0.126 0 0.027 0

0
投票

概率论和马尔可夫链中一个有趣的问题。使用概率来计算 Peter 赢得 5 美元或赢得 0 美元的机会是一种非常聪明的方法。顺便说一句,对于那些对游戏计算和在平台上轻松玩游戏的可能性感兴趣的人,您可以下载 bc game apk 它使游戏更容易访问并增加灵活性,因为您可以随时测试您的机会.

© www.soinside.com 2019 - 2024. All rights reserved.