private Sample Mutate(Sample s, int mc, ISampler rnd)
        {

            if (mc > 1 && rnd.NextFloat() > 0.5f)
            {
                if (rnd.NextFloat() > 0.5f)
                {
                    s.imageX = Mutate(s.imageX, rnd.NextFloat(), rnd.NextFloat());
                    //if (rnd.NextFloat() > 0.5f)
                    s.imageY = Mutate(s.imageY, rnd.NextFloat(), rnd.NextFloat());
                }
                //return s;
                //if (rnd.NextFloat() > 0.5f)return;
            }

            for (int i = 0; i < s.sampleData.Length; i++)
            {
                s.sampleData[i] = Mutate(s.sampleData[i], rnd.NextFloat(), rnd.NextFloat());
            }
            return s;
        }