public static double[] Evaluate(float[] distribution, int iterations = 100000)
        {
            float[] results = distribution.Select(i => 0f).ToArray();
            ElasticDistribution eval = new ElasticDistribution(distribution);

            double ii = 0;
            for (; ii < iterations; ii++)
            {
                var ccv = eval.Evaluate(Guid.NewGuid().GetBigHashCode());
                results[ccv] = results.ElementAt(ccv) + 1;
            }

            return results.Select(i => ((i / ii) * 100f)).ToArray();

        }
        public static double[] Evaluate(float[] distribution, int iterations = 100000)
        {
            float[]             results = distribution.Select(i => 0f).ToArray();
            ElasticDistribution eval    = new ElasticDistribution(distribution);

            double ii = 0;

            for (; ii < iterations; ii++)
            {
                var ccv = eval.Evaluate(Guid.NewGuid().GetBigHashCode());
                results[ccv] = results.ElementAt(ccv) + 1;
            }

            return(results.Select(i => ((i / ii) * 100f)).ToArray());
        }