Example #1
0
        public void SingleArgumentConstructorTest()
        {
            var seed = PcgSeed.TimeBasedSeed();
            var rng  = new PcgExtended(seed);

            Assert.IsNotNull(rng);
        }
Example #2
0
        public void NextIntIntervalTest()
        {
            var minV    = -20;
            var maxV    = 10;
            var pcg     = new PcgExtended(42);
            var lbCount = 0;
            var ubCount = 0;

            for (int i = 0; i < N; i++)
            {
                var aVal = pcg.Next(minV, maxV);
                Assert.That(aVal >= minV);
                Assert.That(aVal < maxV);
                if (aVal == minV)
                {
                    lbCount++;
                }
                if (aVal == maxV - 1)
                {
                    ubCount++;
                }
            }

            Assert.That(lbCount > 0);
            Assert.That(ubCount > 0);
        }
Example #3
0
        public void NextIntUpperBoundTest()
        {
            var maxV    = 10;
            var pcg     = new PcgExtended(42);
            var lbCount = 0;
            var ubCount = 0;

            for (int i = 0; i < N; i++)
            {
                var aVal = pcg.Next(maxV);
                Assert.That(aVal >= 0);
                Assert.That(aVal < maxV);
                if (aVal == 0)
                {
                    lbCount++;
                }
                if (aVal == maxV - 1)
                {
                    ubCount++;
                }
            }

            Assert.That(lbCount > 0);
            Assert.That(ubCount > 0);
        }
Example #4
0
        public void NextDoubleBoundsTest()
        {
            var pcg = new PcgExtended(42);

            for (int i = 0; i < N; i++)
            {
                var aVal = pcg.NextDouble();
                Assert.That(aVal <= 1.0);
                Assert.That(aVal >= 0.0);
            }
        }
Example #5
0
        public void NextDoubleUpperBoundTest()
        {
            var maxV = 2.5;
            var pcg  = new PcgExtended(42);

            for (int i = 0; i < N; i++)
            {
                var aVal = pcg.NextDouble(maxV);
                Assert.That(aVal <= maxV);
                Assert.That(aVal >= 0.0f);
            }
        }
Example #6
0
        public void ReproducibilityTest()
        {
            var r1  = new PcgExtended(11, 1);
            var r1V = r1.NextInts(N);
            var r2  = new PcgExtended(11, 1);
            var r2V = r2.NextInts(N);

            for (int i = 0; i < N; i++)
            {
                Assert.That(r1V[i], Is.EqualTo(r2V[i]));
            }
        }
Example #7
0
        public void NextDoubleIntervalTest()
        {
            var minV = -10;
            var maxV = 2.5;
            var pcg  = new PcgExtended(42);

            for (int i = 0; i < N; i++)
            {
                var aVal = pcg.NextDouble(minV, maxV);
                Assert.That(aVal <= maxV);
                Assert.That(aVal >= minV);
            }
        }
Example #8
0
        public void CorrectnessTests(int seed, int tablePow2, int advancePow2)
        {
            var list = RandomHelpers.ReadPcgExtendedOutput(seed, tablePow2, advancePow2);

            Assert.AreEqual(10000, list.Count);
            var pcg = new PcgExtended((ulong)seed, 721347520444481703, tablePow2, advancePow2);

            for (int i = 0; i < 10000; i++)
            {
                var aVal = pcg.NextUInt();
                var cVal = list[i];
                Assert.That(aVal, Is.EqualTo(cVal));
            }
        }
Example #9
0
        public void NextDoubleMeanTest(float val)
        {
            var minV = -val;
            var maxV = val;
            var pcg  = new PcgExtended(10);
            var rsum = 0.0;
            var lTol = 0.1 * (maxV - minV);

            for (int i = 0; i < N; i++)
            {
                rsum += pcg.NextDouble(minV, maxV);
            }
            var mean = rsum / N;

            Assert.That(mean, Is.EqualTo(0.0f).Within(lTol));
        }
Example #10
0
        public void DefineTablePowConstructorTest()
        {
            var rng = new PcgExtended(42, 8, 32);

            Assert.That(rng.PeriodPow2() == 256 * 32 + 64);
        }
Example #11
0
        public void DefaultConstructorTest()
        {
            var rng = new PcgExtended();

            Assert.IsNotNull(rng);
        }
Example #12
0
 public void Initialize()
 {
     _rng = PcgExtended.Default;
 }
Example #13
0
 /// <summary>
 ///   Returns a random single precision floating point number within the given interval.
 /// </summary>
 /// <param name="this">The this.</param>
 /// <param name="interval">The interval.</param>
 public static float NextFloat(this PcgExtended @this, Interval <float> interval)
 {
     return(@this.NextFloat(interval.LowerBound, interval.UpperBound));
 }