示例#1
0
    public void testGeneratorDiscrepancy(IRNGFactory generatorFactory, double[][] discrepancy)
    {
        //QL_TEST_START_TIMING
        double        tolerance = 1.0e-2;
        List <double> point;
        int           dim;
        ulong         seed = 123456;
        double        discr;
        // more than 1 discrepancy measures take long time
        int sampleLoops = Math.Max(1, discrepancyMeasuresNumber);

        for (int i = 0; i < 8; i++)
        {
            dim = dimensionality[i];
            DiscrepancyStatistics stat = new DiscrepancyStatistics(dim);

            IRNG rsg = generatorFactory.make(dim, seed);

            int j, k = 0, jMin = 10;
            stat.reset(dim);

            for (j = jMin; j < jMin + sampleLoops; j++)
            {
                int points = (int)(Utils.Pow(2.0, (int)(j))) - 1;
                for (; k < points; k++)
                {
                    point = rsg.nextSequence().value;
                    stat.add(point);
                }

                discr = stat.discrepancy();

                if (Math.Abs(discr - discrepancy[i][j - jMin]) > tolerance * discr)
                {
                    Assert.Fail(generatorFactory.name()
                                + "discrepancy dimension " + dimensionality[i]
                                + " at " + points + " samples is "
                                + discr + " instead of "
                                + discrepancy[i][j - jMin]);
                }
            }
        }
    }
    public void testGeneratorDiscrepancy(IRNGFactory generatorFactory, double[][] discrepancy)
    {
        //QL_TEST_START_TIMING
            double tolerance = 1.0e-2;
            List<double> point;
            int dim;
            ulong seed = 123456;
            double discr;
            // more than 1 discrepancy measures take long time
            int sampleLoops = Math.Max(1, discrepancyMeasuresNumber);

            for (int i = 0; i < 8; i++)
            {
                dim = dimensionality[i];
                DiscrepancyStatistics stat = new DiscrepancyStatistics(dim);

                IRNG rsg = generatorFactory.make(dim, seed);

                int j, k = 0, jMin = 10;
                stat.reset(dim);

                for (j = jMin; j < jMin + sampleLoops; j++)
                {
                    int points = (int)(Utils.Pow(2.0, (int)(j))) - 1;
                    for (; k < points; k++)
                    {
                        point = rsg.nextSequence().value;
                        stat.add(point);
                    }

                    discr = stat.discrepancy();

                    if (Math.Abs(discr - discrepancy[i][j - jMin]) > tolerance * discr)
                    {
                        Assert.Fail(generatorFactory.name()
                                    + "discrepancy dimension " + dimensionality[i]
                                    + " at " + points + " samples is "
                                    + discr + " instead of "
                                    + discrepancy[i][j - jMin]);
                    }
                }
            }
    }