Example #1
0
        public MultiplyWithCarryGenerateRandom(long[] seeds, long carry, int r, long multiplier)
        {
            SetR(r);
            SetMultiplier(multiplier);
            _seed = new long[r];
            if (seeds == null || seeds.Length == 0)
            {
                seeds = new long[] { Environment.TickCount };
            }

            var rnd = new LinearCongruentialRandom(seeds[0]);

            _c = (carry & 0xFFFFFFFFL) % multiplier;
            for (int i = 0; i < r; ++i)
            {
                if (i < seeds.Length)
                {
                    _seed[i] = seeds[i] & 0xFFFFFFFFL;
                }
                else
                {
                    _seed[i] = rnd.NextInt() & 0xFFFFFFFFL;
                }
                if (_seed[i] == 0xFFFFFFFFL)
                {
                    _seed[i] = 1L;
                }
            }
        }
        public MultiplyWithCarryGenerateRandom(long[] seeds, long carry, int r, long multiplier)
        {
            SetR(r);
            SetMultiplier(multiplier);
            _seed = new long[r];
            if (seeds == null || seeds.Length == 0)
            {
                seeds = new long[] { Environment.TickCount };
            }

            var rnd = new LinearCongruentialRandom(seeds[0]);
            _c = (carry & 0xFFFFFFFFL) % multiplier;
            for (int i = 0; i < r; ++i)
            {
                if (i < seeds.Length)
                {
                    _seed[i] = seeds[i] & 0xFFFFFFFFL;
                }
                else
                {
                    _seed[i] = rnd.NextInt() & 0xFFFFFFFFL;
                }
                if (_seed[i] == 0xFFFFFFFFL)
                {
                    _seed[i] = 1L;
                }
            }
        }
 public void TestLong()
 {
     var rnd = new LinearCongruentialRandom(1);
     foreach (long aLongTest in LongTest)
     {
         long l = rnd.NextLong();
         Assert.AreEqual(l, aLongTest, AIFH.DefaultPrecision);
     }
 }
 public void TestIntRange()
 {
     var rnd = new LinearCongruentialRandom(1);
     foreach (int aIntRangeTest in IntRangeTest)
     {
         int g = rnd.NextInt(0, 10);
         Assert.AreEqual(g, aIntRangeTest);
     }
 }
 public void TestInt()
 {
     var rnd = new LinearCongruentialRandom(1);
     foreach (int aIntTest in IntTest)
     {
         int g = rnd.NextInt();
         Assert.AreEqual(g, aIntTest, AIFH.DefaultPrecision);
     }
 }
 public void TestGenerateBoolean()
 {
     var rnd = new LinearCongruentialRandom(1);
     foreach (bool aBooleanTest in BooleanTest)
     {
         bool g = rnd.NextBoolean();
         Assert.AreEqual(g, aBooleanTest);
     }
 }
 public void TestGaussianFloat()
 {
     var rnd = new LinearCongruentialRandom(1);
     foreach (double aGaussianTest in GaussianTest)
     {
         double g = rnd.NextGaussian();
         Assert.AreEqual(g, aGaussianTest, AIFH.DefaultPrecision);
     }
 }
 public void TestFloat()
 {
     var rnd = new LinearCongruentialRandom(1);
     foreach (float aFloatTest in FloatTest)
     {
         var l = (float) rnd.NextFloat();
         Assert.AreEqual(l, aFloatTest, AIFH.DefaultPrecision);
     }
 }
 public void TestDoubleRange()
 {
     var rnd = new LinearCongruentialRandom(1);
     foreach (double aDoubleRangeTest in DoubleRangeTest)
     {
         double g = rnd.NextDouble(-1, 1);
         Assert.AreEqual(g, aDoubleRangeTest, AIFH.DefaultPrecision);
     }
 }
 public void TestBasic()
 {
     var rnd = new LinearCongruentialRandom();
     Assert.IsNotNull(rnd.Seed);
     Assert.AreEqual(12345, rnd.Increment);
     Assert.AreEqual(4294967296L, rnd.Modulus);
     Assert.AreEqual(1103515245, rnd.Multiplier);
 }