예제 #1
0
        public void TestNanParameter()
        {
            var engine = MersenneTwister32Bit19937.InitGenRand(1);

            TestInvalidThrows <ArgumentException>(engine, double.NaN, 1d);
            TestInvalidThrows <ArgumentException>(engine, 1d, double.NaN);
        }
        private static uint[] GetRandomValues(MersenneTwister32Bit19937 generator, int size)
        {
            var actual = new uint[size];

            for (var i = 0; i < actual.Length; ++i)
            {
                actual[i] = generator.NextUInt();
            }

            return(actual);
        }
        public void InitGenRandTest(uint seed)
        {
            // the number of random numbers to test
            // This is chosen so that the state is cycled twice.
            const int size = 1400;

            var generator = MersenneTwister32Bit19937.InitGenRand(seed);

            Assert.AreEqual(
                OriginalInitGenRand(seed, size),
                GetRandomValues(generator, size));
        }
        public void InitByArrayTest(int seedSize)
        {
            // the number of random numbers to test
            // This is chosen so that the state is cycled twice.
            const int size = 1400;

            var seeds     = OriginalInitGenRand(1, seedSize);
            var generator = MersenneTwister32Bit19937.InitByArray(seeds);
            var actual    = GetRandomValues(generator, size);
            var expected  = OriginalInitByArray(seeds, size);

            Assert.AreEqual(expected, actual);
        }
        public void TestConstructValid()
        {
            var covarianceMatrix = new[, ]
            {
                { 1.0, 0.5 },
                { 0.5, 1.0 },
            };

            var mean   = new[] { 0.0, 0.0 };
            var engine = MersenneTwister32Bit19937.InitGenRand(1);

            Assert.DoesNotThrow(() => _ = new MultivariateNormalSampler.Builder(mean, covarianceMatrix).Build(engine));
        }
        public void TestLength()
        {
            var mean  = new[] { 0d, 0d };
            var sigma = new[, ]
            {
                { 1d, 0.5 },
                { 0.5, 1d },
            };
            var engine  = MersenneTwister32Bit19937.InitGenRand(1);
            var sampler = new MultivariateNormalSampler.Builder(mean, sigma).Build(engine);

            Assert.AreEqual(2, sampler.Length);
        }
 public void InitByArrayNull()
 {
     Assert.Throws <ArgumentNullException>(
         () => MersenneTwister32Bit19937.InitByArray(null));
 }