R语言模拟斗地主淘汰赛分数情况

某一个斗地主赛事采取12-9-3的晋级方式;每轮底分也呈现递增趋势对晋级情况进行模拟

#底分序列需要输入
base_gold_ls<-c(20,50,100)
x<-as.numeric(c( names(table(TIMES))))

# 输赢倍率所对应的频率

fre_TIMES<-c(as.numeric(table(TIMES)))
#每轮玩家数目序列需要输入
num_gamers<-c(12,9,3)

RESULT_GOLD<-c()
RESULT_GOLD_LS<-list()
# 随机抽取
wl_times<-sample(x,1,replace=F,prob=fre_TIMES)

# 轮次循环,嵌套轮次内玩家循环,循环次数为当前人数/3
for (i in c(1:length(num_gamers))){ 
#本轮比赛循环,循环次数为当前人数/3
for (j in c(1: (num_gamers[i]/3))){
#胜利失败的倍数
wl_times<-sample(x,1,replace=F,prob=fre_TIMES)
# 底分
basegold<-base_gold_ls[i]
# 玩家入场分

base_gold<-1000
if(i==1){RL<-c(rep(1000, times=num_gamers[1]))}else{RL<-RL}
wl<-sample(0:1,1)
if(wl==1){ result_gold<-c(wl_times*basegold*2*1+base_gold,wl_times*basegold*-1+base_gold,wl_times*basegold*-1+base_gold)
} else {result_gold<-c(wl_times*basegold*2*-1+base_gold,wl_times*basegold*1+base_gold,wl_times*basegold*1+base_gold)
}
# 减去每次使用1000作为底分的1000
RESULT_GOLD<-append(RESULT_GOLD,result_gold-1000)


result_gold<-c()
}
# 加上以RL作为底分的成绩,等于使用RL作为底分
RESULT_GOLD<-RESULT_GOLD+RL[1:num_gamers[i]]

#选取前n名作为下次底分
RL<-sort(RESULT_GOLD,decreasing=T)
RL<-RL[1:num_gamers[i]]
#打乱重排,意思为下局的地主随机
Rl<-sample(RL,replace=F)

RESULT_GOLD_LS[i]<-list(RESULT_GOLD)
RESULT_GOLD<-c()
}

以上为单场晋级赛比赛结果

RESLUT_GOLD_LS

为模拟结果

猜你喜欢

转载自www.cnblogs.com/yuvejxke/p/12551266.html
今日推荐