/// <summary> /// preenche o _regAleatorios com registros aleatorios com /// quantidade igual a 25% da quantidade de dados da base original /// </summary> private void PreencherAleatorios() { var rdn = new Random(); for (int j = 0; j < Convert.ToInt32(Dados.Rows.Count / 4.0); j++) { DataRow dr = RegAleatorios.NewRow(); int max, min; for (int i = 0; i < Dados.Columns.Count; i++) { //é verificado o tipo da coluna para gerar o dado aleatorio if (Dados.Columns[i].DataType == typeof(long)) { min = Convert.ToInt32(Dados.AsEnumerable().Min(x => x.Field <long>(i))); max = Convert.ToInt32(Dados.AsEnumerable().Max(x => x.Field <long>(i))); dr[i] = rdn.Next(min, max); } else { min = Convert.ToInt32(Dados.AsEnumerable().Min(x => x.Field <double>(i))); max = Convert.ToInt32(Dados.AsEnumerable().Max(x => x.Field <double>(i))); dr[i] = rdn.Next(min, max) + rdn.NextDouble(); } } RegAleatorios.Rows.Add(dr); } }
/// <summary> /// soma as distancias minimas encontradas e aplica a /// formula de estatistica de hopkins /// </summary> /// <returns>Hopkins</returns> private double CalculoFinal() { double u = Convert.ToDouble(RegAleatorios.AsEnumerable().Sum(x => x.Field <double>("DistanciaMin"))); double w = Convert.ToDouble(RegAmostraBanco.AsEnumerable().Sum(x => x.Field <double>("DistanciaMin"))); return(u / (u + w)); }