public void AnaliseConvergenciaMaoQuantidadeJogos() { IList <AnaliseConvergencia> analises = new List <AnaliseConvergencia>(); for (int numCartasAleatorias = 0; numCartasAleatorias < this.NumeroCartasAleatorias; numCartasAleatorias++) { Carta[] maoOff = this.GetNovaMaoIneditaOff(); for (int numJogosJogados = this.QuantidadeInicialJogosSimulados; numJogosJogados <= this.LimiteMaximoJogosSimulados; numJogosJogados += this.PassoSimulacoes) { AnaliseConvergencia analise = new AnaliseConvergencia() { NumeroDeCartas = maoOff.Length, Cartas = maoOff }; var watch = System.Diagnostics.Stopwatch.StartNew(); analise.QuantidadeDeJogosExecutados = numJogosJogados; analise.Probabilidade = AvaliaProbabilidadeMao.GetRecalculaVitoria(maoOff, (uint)numJogosJogados); watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; analise.TempoDeExecucao = new TimeSpan(elapsedMs * TimeSpan.TicksPerMillisecond); analises.Add(analise); } } // Persiste a analise de convergĂȘncia AnaliseConvergencia.Persiste(analises); }
private void GerarMaosOff() { for (uint i = 2; i <= 14; i++) { for (uint j = i; j <= 14; j++) { IProbabilidadeMaoInicial probMao = new ProbabilidadeMaoInicial() { NumCarta1 = i, NumCarta2 = j, OffOrSuited = 'O', QuantidadesJogosSimulados = this.QuantidadeJogosPorSimulacao }; if (ProbabilidadeMaoInicialContext.JaExisteProbabilidadeCadastrada(probMao)) { continue; } Carta[] maoOff = new Carta[] { new Carta(i, Enuns.Naipe.Copas), new Carta(j, Enuns.Naipe.Espadas) }; probMao.ProbabilidadeVitoria = AvaliaProbabilidadeMao.GetRecalculaVitoria(maoOff, this.QuantidadeJogosPorSimulacao); ProbabilidadeMaoInicialContext.Persiste(probMao); } } }
private void GerarMaosSuited() { for (uint i = 2; i < 14; i++) { for (uint j = i + 1; j <= 14; j++) { IProbabilidadeMaoInicial probMao = new ProbabilidadeMaoInicial() { NumCarta1 = i, NumCarta2 = j, OffOrSuited = 'S', QuantidadesJogosSimulados = this.QuantidadeJogosPorSimulacao }; if (ProbabilidadeMaoInicialContext.JaExisteProbabilidadeCadastrada(probMao)) { continue; } Carta[] maoSuited = new Carta[] { new Carta(i, Enuns.Naipe.Copas), new Carta(j, Enuns.Naipe.Copas) }; string chaveMaoSuited = maoSuited[0].ToString() + " " + maoSuited[1].ToString(); probMao.ProbabilidadeVitoria = AvaliaProbabilidadeMao.GetRecalculaVitoria(maoSuited, this.QuantidadeJogosPorSimulacao); ProbabilidadeMaoInicialContext.Persiste(probMao); } } }
public void Teste1() { IList <Carta> MaoP = new List <Carta>() { new Carta(2, Enuns.Naipe.Ouros), new Carta(2, Enuns.Naipe.Copas) }; Carta[] maoPrimaria = new Carta[] { new Carta(2, Enuns.Naipe.Ouros), new Carta(2, Enuns.Naipe.Copas) }; IList <Carta> MaoS = new List <Carta>() { new Carta(2, Enuns.Naipe.Ouros), new Carta(2, Enuns.Naipe.Copas), }; IList <Carta> Mesa = new List <Carta>() { new Carta(4, Enuns.Naipe.Paus), new Carta(5, Enuns.Naipe.Espadas), new Carta(11, Enuns.Naipe.Copas), new Carta(11, Enuns.Naipe.Ouros) }; Carta[] mesa = new Carta[] { new Carta(4, Enuns.Naipe.Paus), new Carta(5, Enuns.Naipe.Espadas), new Carta(11, Enuns.Naipe.Copas), new Carta(11, Enuns.Naipe.Ouros) }; uint numeroDeJogos = 120000; float prob = 0.0f; float prob_2 = 0.0f; var sw = Stopwatch.StartNew(); AvaliaProbabilidadeMao teste = new AvaliaProbabilidadeMao(MaoP, null, Mesa, numeroDeJogos); teste.Avalia(); prob_2 = teste.Probabilidade; long elapsedMilliseconds = sw.ElapsedMilliseconds; sw.Stop(); sw = Stopwatch.StartNew(); prob = AvaliaProbabilidadeMao.GetRecalculaVitoriaParalelo(maoPrimaria, mesa, null, numeroDeJogos, 5); long elapsedMilliseconds_2 = sw.ElapsedMilliseconds; sw.Stop(); Console.WriteLine("Singular: " + elapsedMilliseconds + " " + teste.RetornaProbabilidade((int)numeroDeJogos, (int)teste.Vitorias)); Console.WriteLine("Paralelo: " + elapsedMilliseconds_2 + " " + prob); Assert.AreEqual(numeroDeJogos, (teste.Vitorias + teste.Empates + teste.Derrotas)); }