示例#1
0
        public void TestSuite()
        {
            var dim     = N12.Rep;
            var trials  = Pow2.T16;
            var maxVal  = (ulong)Pow2.T07;
            var maxVec  = BlockVector.Alloc(dim, maxVal);
            var buckets = new ulong[maxVal];


            var suite = Rng.WyHash64Suite(dim);

            for (var i = 0; i < trials; i++)
            {
                var vector     = suite.Next <ulong>();
                var contracted = vector.Contract(maxVec);
                for (var j = 0; j < dim; j++)
                {
                    var x = contracted[j];
                    Claim.lteq(x, maxVal);
                    ++buckets[x];
                }
            }

            var indices      = Random.Array <int>(10, leftopen(0, buckets.Length));
            var bucketSample = buckets.Values(indices);
            var avg          = (double)gmath.avg <ulong>(bucketSample);
            var deltas       = bucketSample.Map(c => (math.abs(1 - ((double)c / avg)).Round(4)));
            var tolerance    = .1;
            var intolerant   = deltas.Where(x => x > tolerance).Count();

            Claim.eq(intolerant, 0);
        }