Esempio n. 1
0
        public void XorShiftDoesNotRepeadedlyReturnTheSameNumber()
        {
            var       rng        = new XorShiftRng();
            const int iterations = 20;
            double    lastNumber = Double.NaN;
            int       count      = 0;

            // generate multiple random numbers
            for (int i = 0; i < iterations; ++i)
            {
                var number = rng.GetDouble(min: -1.0, max: 1.0);
                number.Should().BeGreaterOrEqualTo(-1.0, "because that is the lower bound");
                number.Should().BeLessOrEqualTo(1.0, "because that is the upper bound");

                // increase count if numbers are the same, otherwise reset counter
                if (number.Equals(lastNumber))
                {
                    ++count;
                }
                else
                {
                    count = 0;
                }

                // store number
                lastNumber = number;
            }

            count.Should().BeLessOrEqualTo(5, "because more than five times the same number is highly unlikely");
        }
Esempio n. 2
0
        public void GenerateInt64_Seed()
        {
            var rng = new XorShiftRng(1);

            for (var i = 0; i < 100; i++)
            {
                Console.WriteLine(rng.GenerateInt64());
            }
        }
Esempio n. 3
0
        public void GenerateDoubleExceptZero()
        {
            var rng = new XorShiftRng();

            for (var i = 0; i < 100; i++)
            {
                var x = rng.GenerateDoubleExceptZero();
                Assert.IsTrue(0 < x && x < 1);
                Console.WriteLine(x);
            }
        }