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); }