示例#1
0
文件: t_bounded.cs 项目: 0xCM/arrows
        public void MultiRandInt64()
        {
            var mr = Rng.WyHash64().ToPolyrand();

            var data = mr.Stream <long>().Take(Pow2.T16);
            int pos = 0, neg = 0, zed = 0;

            foreach (var x in data)
            {
                if (x > 0)
                {
                    pos++;
                }
                else if (x < 0)
                {
                    neg++;
                }
                else
                {
                    zed++;
                }
            }
            var r = math.abs(pos - neg) / ((double)pos + (double)neg);

            var tolerance = .01;

            Claim.lt(r, tolerance);
        }
示例#2
0
文件: t_seed.cs 项目: 0xCM/arrows
        public void reproduce()
        {
            var s1 = Rng.FixedSeed(54ul);
            var s2 = Rng.FixedSeed(54ul + 8ul);

            var rng1 = Rng.WyHash64(s1).ToPolyrand();
            var rng2 = Rng.WyHash64(s2).ToPolyrand();
            var rng3 = Rng.WyHash64(s1).ToPolyrand();

            var sample1 = rng1.Stream <ulong>().Take(Pow2.T08).ToArray();
            var sample2 = rng2.Stream <ulong>().Take(Pow2.T08).ToArray();
            var sample3 = rng3.Stream <ulong>().Take(Pow2.T08).ToArray();


            for (var i = 0; i < Pow2.T08; i++)
            {
                Claim.neq(sample1[i], sample2[i]);
            }


            for (var i = 0; i < Pow2.T08; i++)
            {
                Claim.eq(sample1[i], sample3[i]);
            }
        }
示例#3
0
文件: t_bounded.cs 项目: 0xCM/arrows
        public void TestWyHash64()
        {
            var rng      = Rng.WyHash64();
            var data     = rng.Array <ulong>(Pow2.T16);
            var cutpoint = (double)UInt64.MaxValue / 2.0;

            var above = 0;
            var below = 0;

            foreach (var x in data)
            {
                if (x >= cutpoint)
                {
                    above++;
                }
                else if (x < cutpoint)
                {
                    below++;
                }
            }

            var r         = (math.abs(above - below) / ((double)(above + below))).Round(4);
            var tolerance = .01;

            Claim.lt(r, tolerance);
        }
示例#4
0
 public void bench_wyhash_uniform_u64()
 {
     Benchmark(Rng.WyHash64().PointSource <ulong>());
 }