我正在构建一个阵容模拟器,它使用吸收马尔可夫链来模拟某个阵容得分的跑步次数。对阵容中的9名球员中的每一位球员都有不同的转换矩阵,并且使用以下功能模拟一场比赛:
simulate.half.inning9 <- function(P1,P2,P3,P4,P5,P6,P7,P8,P9,R,start=1){
s <- start; path <- NULL; runs <- 0; zz=1;inn=1
while(inn<10){
s <- start; path <- NULL;
while(s<25){
if(zz==1){
P=P1
}
if(zz==2){
P=P2
}
if(zz==3){
P=P3
}
if(zz==4){
P=P4
}
if(zz==5){
P=P5
}
if(zz==6){
P=P6
}
if(zz==7){
P=P7
}
if(zz==8){
P=P8
}
if(zz==9){
P=P9
}
s.new <- sample(1:25,1,prob=P[s,])
path <- c(path,s.new)
runs <- runs+R[s,s.new]
s <- s.new
zz=ifelse(zz==9,1,zz+1)
}
inn=inn+1
runs
}
runs
}
Mat 1-9是单独的25x25转换矩阵。是的,我知道我应该使用一个清单!然后,我使用下一个函数来模拟1000个赛季的游戏,使用此功能尝试让它适应&#34; true&#34;数。
RUNS <- replicate(162000,simulate.half.inning9(mat1,mat2,mat3,
mat4,mat5,mat6,mat7,mat8,mat9,R))
R是一个矩阵,它基本上告诉函数从一个状态到另一个状态可以获得多少次运行。
所以我的问题是,有没有办法欺骗这个系统以获得&#34; true&#34;不运行1000次的每个阵容模拟的数字?这样做的目的是看看哪个阵容产生了最多&#34;真正的&#34;运行。
因为有9个!设置阵容的方法,每次运行362880个不同的阵容1000次是不可行的。
谢谢!