#copa do mundo pts = structure(list(n = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32), pais = c("SAU ", "EGY", "RUS", "URY", "ESP", "IRN", "MAR", "PRT", "AUS", "DNK", "FRA", "PER", "ARG", "HRV", "ISL", "NGA", "BRA", "CRI", "SRB", "CHE", "DEU", "KOR", "MEX", "SWE", "BEL", "GB-ENG", "PAN", "TUN", "COL", "JPN", "POL", "SEN"), pts = c(8, 2, 59, 72, 99, 6, 10, 43, 9, 26, 96, 15, 140, 23, 1, 18, 227, 19, 59, 39, 218, 24, 56, 61, 51, 98, 1, 7, 23, 16, 50, 8), nome = c("Arábia Saudita", "Egito", "Federação Russa", "Uruguai", "Espanha", "Irã", "Marrocos", "Portugal", "Australia", "Dinamarca", "França", "Peru", "Argentina", "Croácia", "Islândia", "Nigéria", "Brasil", "Costa Rica", "Sérvia", "Suíça", "Alemanha", "Coréia do Sul", "México", "Suécia", "Bélgica", "Inglaterra", "Panamá", "Tunísia", "Colombia", "Japão", "Polônia", "Senegal"), grupo = c("A", "A", "A", "A", "B", "B", "B", "B", "C", "C", "C", "C", "D", "D", "D", "D", "E", "E", "E", "E", "F", "F", "F", "F", "G", "G", "G", "G", "H", "H", "H", "H")), .Names = c("n", "pais", "pts", "nome", "grupo"), row.names = c(NA, -32L), class = "data.frame") vencedor <- function(pais_1, pais_2) { pts_1 = pts$pts[ pts$pais == pais_1] pts_2 = pts$pts[ pts$pais == pais_2] p = pts_1/ (pts_1+pts_2) return ( sample( c(pais_1, pais_2), size=1,prob=c(p,1-p))) } p_pais = function(pais_1, pais_2) { pts_1 = pts$pts[ pts$pais == pais_1] pts_2 = pts$pts[ pts$pais == pais_2] p = pts_1/ (pts_1+pts_2) return(p) } grupo_a = pts$pais[pts$grupo =="A"] grupo_b = pts$pais[pts$grupo =="B"] grupo_c = pts$pais[pts$grupo =="C"] grupo_d = pts$pais[pts$grupo =="D"] grupo_e = pts$pais[pts$grupo =="E"] grupo_f = pts$pais[pts$grupo =="F"] grupo_g = pts$pais[pts$grupo =="G"] grupo_h = pts$pais[pts$grupo =="H"] todos = c(grupo_a,grupo_b,grupo_c,grupo_d,grupo_e,grupo_f,grupo_g,grupo_h) grupos = list(grupo_a,grupo_b,grupo_c,grupo_d,grupo_e,grupo_f,grupo_g,grupo_h) ### Controle simulacoes n = 10^4 finais = rep("",n) resultados = data.frame() tmpfile = tempfile() for(run in 1:n) { cat("Run:", run, "\n") pontos = data.frame(pais=todos,valor=0, stringsAsFactors=F) #primeira fase for(grupo in grupos){ jogo_1 = vencedor(grupo[1], grupo[2]) pontos$valor[ pontos$pais %in% jogo_1] = pontos$valor[ pontos$pais %in% jogo_1] + 1 jogo_2 = vencedor(grupo[3], grupo[4]) pontos$valor[ pontos$pais %in% jogo_2] = pontos$valor[ pontos$pais %in% jogo_2] + 1 jogo_3 = vencedor(grupo[1], grupo[3]) pontos$valor[ pontos$pais %in% jogo_3] = pontos$valor[ pontos$pais %in% jogo_3] + 1 jogo_4 = vencedor(grupo[2], grupo[4]) pontos$valor[ pontos$pais %in% jogo_4] = pontos$valor[ pontos$pais %in% jogo_4] + 1 jogo_5 = vencedor(grupo[1], grupo[4]) pontos$valor[ pontos$pais %in% jogo_5] = pontos$valor[ pontos$pais %in% jogo_5] + 1 jogo_6 = vencedor(grupo[2], grupo[3]) pontos$valor[ pontos$pais %in% jogo_6] = pontos$valor[ pontos$pais %in% jogo_6] + 1 } #selecao oitavas prim = rep("", 8) seg = rep("", 8) for(i in 1:8){ grupo = grupos[[i]] pts_grupo = pontos[ pontos$pais %in% grupo,] pts_grupo = pts_grupo[ order(pts_grupo$valor, sample(x=1:4,size=4,replace=F), decreasing=T),] prim[i] = pts_grupo$pais[1] seg[i] = pts_grupo$pais[2] } #oitavas oitavas = rep("", 8) for(i in 1:4) { oitavas[i] = vencedor(prim[i*2-1], seg[i*2]) } for(i in 1:4) { oitavas[i+4] = vencedor(prim[i*2], seg[i*2-1]) } #quartas quartas = rep("", 4) for(i in 1:4) { quartas[i] = vencedor(oitavas[i*2-1], oitavas[i*2]) } #semifinal semifinal = rep("", 2) perdedor = rep("", 2) for(i in 1:2) { semifinal[i] = vencedor(quartas[i*2-1], quartas[i*2]) perdedor[i] = setdiff(c(quartas[i*2-1], quartas[i*2]), semifinal[i]) } final = vencedor(semifinal[1], semifinal[2]) terceiro = vencedor(perdedor[1], perdedor[2]) finais[run] = final resultados = data.frame(final, terceiro, t(semifinal), t(quartas), t(oitavas), t(prim), t(seg), stringsAsFactors=F) colnames(resultados) = c("final","terceiro", paste("semi_",1:2, sep=""), paste("quartas_",1:4, sep=""), paste("oitavas_",1:8, sep=""), paste("prim_",1:8, sep=""), paste("seg_",1:8, sep="")) if(run==1) { write.table(resultados, tmpfile, append=FALSE,col.names=TRUE, sep=",", row.names=F) } else { write.table(resultados, tmpfile, append=TRUE,col.names=FALSE, sep=",", row.names=F) } } file.copy(tmpfile, "resultados_2018.csv") resultados = read.csv("resultados_2018.csv") sort(table(finais)/n*100, decreasing=T)