예제 #1
0
        public void TestConstructInvalid()
        {
            Assert.Throws <ArgumentException>(
                () => _ = GetSampler(12, 7));

            Assert.Throws <ArgumentNullException>(
                () => _ = new UniformIntSampler(null, 1, 2));
        }
예제 #2
0
        public void IntegrateCdf(int min, int max)
        {
            const int    trials  = 1000000;
            const double error   = 0.0005;
            var          sampler = new UniformIntSampler(new ReducedThreeFry4X64(1), min, max);

            for (var x = min; x <= max; ++x)
            {
                var expected = (double)(x - min + 1) / (max - min + 1);
                var success  = 0;
                for (var i = 0; i < trials; ++i)
                {
                    if (sampler.GetNext() <= x)
                    {
                        ++success;
                    }
                }

                var actual = (double)success / trials;
                Assert.AreEqual(expected, actual, error);
            }
        }