某一个斗地主赛事采取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
为模拟结果