コード例 #1
0
        private TestEval eval(List <int> estimates, int vocabSize, string descr)
        {
            TestEval res = new TestEval {
                Descr = descr, VocabSize = vocabSize, RunCount = estimates.Count
            };
            int sum     = 0;
            int diffSum = 0;

            foreach (int est in estimates)
            {
                sum += est;
                int diff = Math.Abs(vocabSize - est);
                diffSum += diff;
                if (diff <= 500)
                {
                    ++res.Range0500;
                }
                else if (diff < 1000)
                {
                    ++res.Range1000;
                }
                else if (diff < 1500)
                {
                    ++res.Range1500;
                }
                else if (diff < 2000)
                {
                    ++res.Range2000;
                }
                else if (diff < 2500)
                {
                    ++res.Range2500;
                }
                else if (diff < 3000)
                {
                    ++res.Range3000;
                }
                else if (diff < 3500)
                {
                    ++res.Range3500;
                }
                else if (diff < 4000)
                {
                    ++res.Range4000;
                }
                else if (diff < 4500)
                {
                    ++res.Range4500;
                }
                else
                {
                    ++res.RangeGreater;
                }
            }
            res.AvgEstimate = sum / estimates.Count;
            res.AvgDiff     = diffSum / estimates.Count;
            return(res);
        }
コード例 #2
0
        public override void Process()
        {
            // Split rank-based sim with points denser in first part
            simSplitRank();
            // Split prop sim with points denser in first part
            simSplitProp();

            // Old.
            List <int> estimates = new List <int>();

            genPointsLinear(0, dictSize, points);
            // Muchos FlatA trials: proportional estimate with linear points
            estimates.Clear();
            for (int i = 0; i != 1000; ++i)
            {
                genSubject(propsFlatA);
                estimates.Add(simProp(points, dictSize, 0));
            }
            TestEval evalFlatAProp = eval(estimates, vocabSize, "FlatA, proportion, linear");

            // Muchos SkewA trials: proportional estimate with linear points
            estimates.Clear();
            for (int i = 0; i != 1000; ++i)
            {
                genSubject(propsSkewA);
                estimates.Add(simProp(points, dictSize, 0));
            }
            TestEval eee = eval(estimates, vocabSize, "SkewA, proportion, linear");

            // Muchos SkewA trials: proportional estimate with linear points
            estimates.Clear();
            for (int i = 0; i != 1000; ++i)
            {
                genSubject(propsSkewB);
                estimates.Add(simProp(points, dictSize, 0));
            }
            TestEval evalSkewAProp = eval(estimates, vocabSize, "SkewA, proportion, linear");

            // Muchos SkewB trials: proportional estimate with linear points
            estimates.Clear();
            for (int i = 0; i != 1000; ++i)
            {
                genSubject(propsSkewC);
                estimates.Add(simProp(points, dictSize, 0));
            }
            TestEval evalSkewBProp = eval(estimates, vocabSize, "SkewB, proportion, linear");
        }
コード例 #3
0
        private void simSplitProp()
        {
            genPointsLinHalf(0, 16500, pointsX);
            genPointsLinHalf(0, 33500, pointsY);
            List <int> estimates = new List <int>();

            for (int i = 0; i != 1000; ++i)
            {
                genSubject(propsFlatA);
                int estX = simProp(pointsX, 16500, 0);
                int estY = simProp(pointsY, 33500, 16500);
                estimates.Add(estX + estY);
            }
            TestEval srFlatA = eval(estimates, vocabSize, "");

            estimates.Clear();
            for (int i = 0; i != 1000; ++i)
            {
                genSubject(propsSkewA);
                int estX = simProp(pointsX, 16500, 0);
                int estY = simProp(pointsY, 33500, 16500);
                estimates.Add(estX + estY);
            }
            TestEval srSkewA = eval(estimates, vocabSize, "");

            estimates.Clear();
            for (int i = 0; i != 1000; ++i)
            {
                genSubject(propsSkewB);
                int estX = simProp(pointsX, 16500, 0);
                int estY = simProp(pointsY, 33500, 16500);
                estimates.Add(estX + estY);
            }
            TestEval srSkewB = eval(estimates, vocabSize, "");

            estimates.Clear();
            for (int i = 0; i != 1000; ++i)
            {
                genSubject(propsSkewC);
                int estX = simProp(pointsX, 16500, 0);
                int estY = simProp(pointsY, 33500, 16500);
                estimates.Add(estX + estY);
            }
            TestEval srSkewC = eval(estimates, vocabSize, "");
        }