//Para set public void Ordenar() { LinkedList <CollectionValue> tmp = new LinkedList <CollectionValue>(); IEnumerable <CollectionValue> ordered; if (Tipo.Valor.IsString() || Tipo.Valor.IsDate() || Tipo.Valor.IsTime()) { ordered = Valores.OrderBy(p => p.Valor.ToString()).AsEnumerable(); } else if (Tipo.Valor.IsInt()) { ordered = Valores.OrderBy(p => (int)p.Valor).AsEnumerable(); } else if (Tipo.Valor.IsDouble()) { ordered = Valores.OrderBy(p => (double)p.Valor).AsEnumerable(); } else { ordered = null; } if (ordered != null) { int contador = 0; foreach (CollectionValue value in ordered) { value.Clave = (contador++).ToString(); tmp.AddLast(value); } Valores = tmp; } }
private void GenerarTablaRandom() { if (Valores.Sum(v => v.ProbabilidadAsociada) > 1) { throw new NotSupportedException("La suma de las probabilidades no puede ser mayor a 1"); } Valores = Valores.OrderBy(v => v.Valor).ToList(); RandomAsociados = new List <double> { 0 }; for (var i = 1; i < Valores.Count; i++) { RandomAsociados.Add(RandomAsociados[i - 1] + Valores[i - 1].ProbabilidadAsociada); } }
//Genera la tabla con los intervalos private void GenerarTabla() { //ordena las p(x) Valores = Valores.OrderBy(v => v.ValorAsociado).ToList(); intervaloHasta = new List <double>(); //setea los intervalos for (var i = 0; i < Valores.Count; i++) { if (intervaloHasta.Count == 0) { intervaloHasta.Insert(i, 0 + Valores[i].ProbabilidadAsociada - 0.01); } else { intervaloHasta.Insert(i, (intervaloHasta[i - 1] + Valores[i - 1].ProbabilidadAsociada)); } } }