public double[] TestingUniformity(IRandomMethod method, int numberOfSection, int countNumbers, out double M, out double D)
        {
            double[] result = new double[numberOfSection];
            double[] numbers = new double[countNumbers];

            for (int i = 0; i < countNumbers; i++)
            {
                numbers[i] = method.Next();
            }

            double max = numbers.Max();

            for (int i = 0; i < countNumbers; i++)
            {
                result[(int)(numbers[i]*numberOfSection/max)%numberOfSection]++;
            }

            numbers = numbers.Select(x => x/max).ToArray();

            double m = CalcM(numbers);
            double d = CalcD(numbers);

            M = m;
            D = d;
            return result;
        }
        public double TestingtestingIndependence(IRandomMethod method, int countNumbers)
        {
            double result;

            double[] numbers1 = new double[countNumbers];

            double[] numbers2 = new double[countNumbers];

            numbers1 = numbers1.Select(x => (double)method.Next()).ToArray();

            double max = numbers1.Max();

            numbers2 = numbers2.Select(x => (double)method.Next()).ToArray();

            max = Math.Max(max, numbers2.Max());

            numbers1 = numbers1.Select(x => x/max).ToArray();

            numbers2 = numbers2.Select(x => x/max).ToArray();

            double[] multiply = new double[countNumbers];

            for (int i = 0; i < countNumbers; i++)
            {
                multiply[i] = numbers1[i]*numbers2[i];
            }

            result = (CalcM(multiply) - CalcM(numbers1)*CalcM(numbers2))/Math.Sqrt(CalcD(numbers1)*CalcD(numbers2));

            return result;
        }