Random expectation

There is not much one could reasonably say about a single random extraction. But we have a more defined expectation on the mean of a series of random extractions.

The Java Random class makes available a few different pseudo-random distribution from which we can extract variables and play with them. Here we are going to use values returned by nextDouble(), method that returns a value picked up from a uniform distribution between 0.0 and 1.0, and nextGaussian(), that refers to a Gaussian ("normal") distribution with mean 0 and standard deviation 1.

To spice things a bit, we will also manipulate the gaussian values to get a square gaussian distribution.

The mean for the variables generated from Random.nextDouble() should tend to 0.5, as we should find out running a few times this function with increasing values of "n":
double expectU(int n) {
    double sum =0;
    for(int i =0; i < n; ++i)
        sum += generator.nextDouble();
    return sum/n;
}
Doesn't change much for Random.nextGaussian(), but that it should tend to a mean of 0.0:
double expectG(int n) {
    double sum =0;
    for(int i =0; i < n; ++i)
        sum += generator.nextGaussian();
    return sum/n;
}
A bit more interesting the square gaussian case, since we provide an adaptor from Random.nextGaussian():
double squareGaussian() {
    return Math.pow(generator.nextGaussian(), 2);
}

double expectSG(int n) {
    double sum =0;
    for(int i =0; i < n; ++i)
        sum += squareGaussian();
    return sum/n;
}
In this last test we should see how, for increasing values of n, the resulting expected mean value should tend to 1.0.

No comments:

Post a Comment