public static List <DocumentVector> GetSeedPoints2v(List <DocumentVector> docCollection, int k)
        {
            List <DocumentVector> seedPoints = new List <DocumentVector>(k);
            DocDetails            docDetails;
            List <DocDetails>     docDetailsList = new List <DocDetails>();
            int index = 0;

            int            firstIndex = KMeansPlus.GenerateRandomNumber(0, docCollection.Count);
            DocumentVector FirstPoint = docCollection[firstIndex];

            seedPoints.Add(FirstPoint);

            for (int i = 0; i < k - 1; i++)
            {
                if (seedPoints.Count >= 2)
                {
                    DocDetails minpd = GetMinimalPointDistance(docDetailsList);
                    index = GetWeightedProbDist(minpd.Weights, minpd.Sum);
                    DocumentVector SubsequentPoint = docCollection[index];

                    docDetails = new DocDetails();
                    docDetails = GetAllDetails(docCollection, SubsequentPoint, docDetails);
                    docDetailsList.Add(docDetails);
                }
                else
                {
                    docDetails = new DocDetails();
                    docDetails = GetAllDetails(docCollection, FirstPoint, docDetails);
                    docDetailsList.Add(docDetails);
                    index = GetWeightedProbDist(docDetails.Weights, docDetails.Sum);
                    DocumentVector SecondPoint = docCollection[index];
                    seedPoints.Add(SecondPoint);

                    docDetails = new DocDetails();
                    docDetails = GetAllDetails(docCollection, SecondPoint, docDetails);
                    docDetailsList.Add(docDetails);
                }
            }
            return(seedPoints);
        }
        private static DocDetails GetAllDetails(List <DocumentVector> docCollection, DocumentVector seedPoint, DocDetails docDetails)
        {
            float[] Weights = new float[docCollection.Count];
            float   minD    = float.MaxValue;
            float   Sum     = 0;
            int     i       = 0;

            foreach (DocumentVector point in docCollection)
            {
                if (point == seedPoint) //Delta is 0
                {
                    continue;
                }

                Weights[i] = KMeansPlus.GetEucliedeanDistance(point, seedPoint);
                Sum       += Weights[i];
                if (Weights[i] < minD)
                {
                    minD = Weights[i];
                }
                i++;
            }

            docDetails.SeedDocVect = seedPoint;
            docDetails.Weights     = Weights;
            docDetails.Sum         = Sum;
            docDetails.MinD        = minD;

            return(docDetails);
        }