示例#1
0
        public void Shift128SpeedTest()
        {
            Random r = new Random();

            r.Next();
            WeakRandom.XorShift128();


            Stopwatch s = new Stopwatch();

            s.Start();
            for (int i = 0; i < 1000000; i++)
            {
                r.Next();
            }
            long libraryTime = s.ElapsedTicks;

            s.Restart();
            for (int i = 0; i < 1000000; i++)
            {
                WeakRandom.XorShift128();
            }
            long xorTime = s.ElapsedTicks;

            Assert.IsTrue(xorTime < libraryTime);
        }
示例#2
0
        public void Add(T item)
        {
            if (head._right == null)
            {
                var newNode = new Skiplist <T> .Node <T>(item);

                head._right    = newNode;
                newNode._left  = head;
                newNode._right = tail;
                tail._left     = newNode;
            }
            else
            {
                var newNode = AddNodeToBottomLevel(item);

                int curHeight = 1;
                while (WeakRandom.XorShift128(2) % 4 == 0)
                {
                    curHeight++;
                    if (curHeight > maxHeight) //need to add a new head/tail level
                    {
                        AddLevel();
                    }
                    AddUpperNode(item, newNode);
                }
            }
        }
示例#3
0
        public void btnOneMore_Click(object sender, EventArgs args)
        {
            WeakRandom   rnd     = (WeakRandom)Session["Random"];
            IList <uint> numbers = (IList <uint>)Session["Numbers"];

            numbers.Add(rnd.Next(MIN, MAX));

            lblSequence.Text = "Sequence: " + Print(numbers);
        }
示例#4
0
        public void Shift128ModTest()
        {
            int count = 0;

            for (int i = 0; i < 100000; i++)
            {
                int a = WeakRandom.XorShift128(2);
                if (a == 0)
                {
                    count++;
                }
            }
            Assert.IsTrue(count > 49500 && count < 50500);
        }
示例#5
0
        public void Shift128Test2()
        {
            var generated = new List <int>();

            for (int i = 0; i < 100000; i++)
            {
                int a = WeakRandom.XorShift128();
                generated.Add(a);
            }
            int count = generated.Count(q => q % 2 == 0);

            Assert.IsTrue(count > 49500 && count < 50500);
            count = generated.Count(q => q > Int32.MaxValue / 2);
            Assert.IsTrue(count > 49500 && count < 50500);
        }
示例#6
0
        public void Reset()
        {
            Session["Random"] = new WeakRandom();

            var rnd = (WeakRandom)Session["Random"];

            IList <uint> numbers = new List <uint>();

            for (int i = 0; i < INIT_NUMBERS; i++)
            {
                numbers.Add(rnd.Next(MIN, MAX));
            }

            Session["Numbers"] = numbers;
        }
示例#7
0
        public void btnGo_Click(object sender, EventArgs args)
        {
            WeakRandom rnd = (WeakRandom)Session["Random"];

            uint next = rnd.Peek(MIN, MAX);

            if (txtNextNumber.Text == next.ToString())
            {
                lblResult.Text = "You found it!";
            }
            else
            {
                lblResult.Text = "Sorry please try again.";
            }
        }
示例#8
0
        public void Shift128Test()
        {
            var generated = new List <int>();

            for (int i = 0; i < 1000; i++)
            {
                int a = WeakRandom.XorShift128();
                generated.Add(a);
            }
            foreach (int i in generated)
            {
                if (generated.Count(q => q == i) > 2)
                {
                    Assert.Fail();
                }
            }
        }