public void TestSampleScaleSigned()
        {
            int sampleCount = 10_000_000;
            UniformDistribution dist = new UniformDistribution();
            double[] sampleArr = new double[sampleCount];

            for(int i=0; i<sampleCount; i++){
                sampleArr[i] = dist.Sample(20.0, true);
            }

            UniformDistributionTest(sampleArr, -20.0, 20.0);
        }
Example #2
0
        public void SampleUnit()
        {
            int           sampleCount = 10_000_000;
            IRandomSource rng         = RandomDefaults.CreateRandomSource();
            var           sampleArr   = new double[sampleCount];

            for (int i = 0; i < sampleCount; i++)
            {
                sampleArr[i] = UniformDistribution.Sample(rng);
            }

            UniformDistributionTest(sampleArr, 0, 1.0);
        }
Example #3
0
        public void TestSampleScale()
        {
            int           sampleCount = 10000000;
            IRandomSource rng         = RandomDefaults.CreateRandomSource();

            double[] sampleArr = new double[sampleCount];

            for (int i = 0; i < sampleCount; i++)
            {
                sampleArr[i] = UniformDistribution.Sample(rng, 20f);
            }

            UniformDistributionTest(sampleArr, 0f, 20f);
        }
Example #4
0
        public void TestSampleScale()
        {
            int sampleCount          = 10000000;
            UniformDistribution dist = new UniformDistribution();

            double[] sampleArr = new double[sampleCount];

            for (int i = 0; i < sampleCount; i++)
            {
                sampleArr[i] = dist.Sample(20f);
            }

            UniformDistributionTest(sampleArr, 0f, 20f);
        }
        public void TestSample()
        {
            int sampleCount = 10_000_000;
            UniformDistribution dist = new UniformDistribution();
            double[] sampleArr = new double[sampleCount];

            for(int i=0; i<sampleCount; i++){
                sampleArr[i] = dist.Sample();
            }

            UniformDistributionTest(sampleArr, 0.0, 1.0);

            // Configure a scale and a signed flag.
            dist = new UniformDistribution(100.0, true);

            for(int i=0; i<sampleCount; i++){
                sampleArr[i] = dist.Sample();
            }

            UniformDistributionTest(sampleArr, -100.0, 100.0);
        }
        /// <summary>
        /// Generate a random square linear transformation matrix.
        /// </summary>
        /// <param name="size">The size of the matrix.</param>
        /// <param name="condition">The condition number.</param>
        /// <returns></returns>

        /*public static Matrix<double> RandomLinearTransformation(int size, int condition)
         * {
         *  UniformDistribution distribution = new UniformDistribution(new ConstantControlParameter(1), new ConstantControlParameter(size + 1));
         *
         *  Matrix<double> p = RandomOrthogonal(size);
         *  Matrix<double> q = RandomOrthogonal(size);
         *
         *  //create a blank nxn matrix
         *  Matrix<double> n = Matrix<double>.Build.Dense(size, size, (i,j) => i == j ? Math.Pow(condition, (distribution.Sample() - 1) / size) : 0.0);
         *
         *  return p * n * q;
         * } */

        public static Matrix RandomLinearTransformation(int size, int condition)
        {
            UniformDistribution distribution = new UniformDistribution(new ConstantControlParameter(1), new ConstantControlParameter(size + 1));
            Matrix p = RandomOrthogonal(size);
            Matrix q = RandomOrthogonal(size);

            Matrix n = new Matrix(size, size, (i, j) => i == j ? Math.Pow(condition, (distribution.Sample() - 1) / size) : 0.0);

            return(p * n * q);
        }