Example: Random Number Generation

In this example, a discrete normal random sample of size 1000 is generated via Random.nextGaussian. Random.setSeed is first used to set the seed. After the ChiSquaredTest constructor is called, the random observations are added to the test one at a time to simulate streaming data. The Chi-squared test is performed using Cdf.normal as the cumulative distribution function object to see how well the random numbers fit the normal distribution.
import com.imsl.stat.*;

public class RandomEx1 implements CdfFunction {
    public double cdf(double x) {
        return Cdf.normal(x);
    }
    
    public static void main(String args[]) throws
    InverseCdf.DidNotConvergeException {
        int nObservations = 1000;
        Random r = new Random(123457L);
        ChiSquaredTest test =
        new ChiSquaredTest(new RandomEx1(), 10, 0);
        for (int k = 0;  k < nObservations;  k++) {
            test.update(r.nextNormal(), 1.0);
        }
        
        double p = test.getP();
        System.out.println("The P-value is "+p);
    }
}

Output

The P-value is 0.5518855965158243
Link to Java source.