public DistribuicaoNormalEntity Build(DistribuicaoNormalEntity entidade) { foreach (var item in entidade.Valor.Where(q => q.HasValue)) { var Z = CalcularZ(item.Value, entidade.MediaPonderada, entidade.DesvioPadrao); entidade.DistribuicaoNormalZEntity.Add(new DistribuicaoNormalZEntity() { ValorOriginal = item.Value, Z = Z, ValorTabela = TabelaDistribuicao.Calcular(Z), }); } if (entidade.TipoEntrada == 0) { var first = entidade.DistribuicaoNormalZEntity.First(); entidade.Probabilidade = ProbabilidadeMenor(first.Z, first.ValorTabela); } else if (entidade.TipoEntrada == 1) { var menor = entidade.DistribuicaoNormalZEntity.First(e => e.Z == entidade.DistribuicaoNormalZEntity.Min(q => q.Z)); var maior = entidade.DistribuicaoNormalZEntity.First(e => e.Z == entidade.DistribuicaoNormalZEntity.Max(q => q.Z)); entidade.Probabilidade = ProbabilidadeEntre(new Tuple <decimal, decimal>(menor.Z, menor.ValorTabela), new Tuple <decimal, decimal>(maior.Z, maior.ValorTabela)); } else { var first = entidade.DistribuicaoNormalZEntity.First(); entidade.Probabilidade = ProbabilidadeMaior(first.Z, first.ValorTabela); } return(entidade); }
public void Maior() { var entidade = new DistribuicaoNormalEntity { DesvioPadrao = 2000, MediaPonderada = 10000, TipoEntrada = 2, Valor = new[] { new decimal?(10000), new decimal?(12000) } }; var teste = new DistribuicaoNormalApp().Build(entidade); }
public void Entre() { var entidade = new DistribuicaoNormalEntity { DesvioPadrao = 2000, MediaPonderada = 10000, TipoEntrada = 1, Valor = new[] { new decimal?(9000), new decimal?(12000) } }; var teste = new DistribuicaoNormalApp().Build(entidade); Assert.AreEqual(teste.Probabilidade, new decimal(53.28), "O valor da probabilidade não está correto"); var entidade2 = new DistribuicaoNormalEntity { DesvioPadrao = 2000, MediaPonderada = 10000, TipoEntrada = 1, Valor = new[] { new decimal?(8000), new decimal?(9000) } }; var teste2 = new DistribuicaoNormalApp().Build(entidade2); Assert.AreEqual(teste2.Probabilidade, new decimal(14.98), "O valor da probabilidade não está correto"); }
public static MvcHtmlString FormatacaoObjetoDistribuicaoNormal(this HtmlHelper h, DistribuicaoNormalEntity input) { switch (input.TipoEntrada) { case 0: { return(new MvcHtmlString($"{input.DistribuicaoNormalZEntity.First().Z.ToString("0.0").Replace(",", ".")},0,{input.MediaPonderada}")); } case 1: { var min = input.DistribuicaoNormalZEntity.Min(q => q.Z); var max = input.DistribuicaoNormalZEntity.Max(q => q.Z); return(new MvcHtmlString($"{min.ToString("0.0").Replace(",", ".")},{max.ToString("0.0").Replace(",", ".")},{input.MediaPonderada}")); } case 2: { return(new MvcHtmlString($"0,{input.DistribuicaoNormalZEntity.First().Z.ToString("0.0").Replace(",", ".")},{input.MediaPonderada}")); } } throw new Exception(); }
private void Teste(DistribuicaoNormalEntity distribuicao, double valor) { var teste = new DistribuicaoNormalApp().Build(distribuicao); Assert.AreEqual(teste.Probabilidade, valor, "O valor da probabilidade não está correto"); }
public ActionResult Index(DistribuicaoNormalEntity distribuicao) { return(View(new DistribuicaoNormalApp().Build(distribuicao))); }