Example usage for org.apache.commons.math3.random RandomDataGenerator reSeed

List of usage examples for org.apache.commons.math3.random RandomDataGenerator reSeed

Introduction

In this page you can find the example usage for org.apache.commons.math3.random RandomDataGenerator reSeed.

Prototype

public void reSeed(long seed) 

Source Link

Document

Reseeds the random number generator with the supplied seed.

Usage

From source file:com.siemens.industrialbenchmark.util.RandomNumberExpectedValueTest.java

@Test
public void testExpectedValues() {

    long seed = 0;
    Random rand = new Random(seed);
    RandomDataGenerator randomData = new RandomDataGenerator();

    double uniformAverage = 0.0;
    double binomialAverage = 0.0;
    double normalAverage = 0.0;
    double exponentialAverage = 0.0;

    for (int i = 0; i < 1e6; i++) {

        // set current seed
        randomData.reSeed(seed);

        // draw random numbers
        double n = randomData.nextGaussian(0, 1);
        double u = randomData.nextUniform(0, 1);
        double b = randomData.nextBinomial(1, 0.5);
        double e = randomData.nextExponential(0.25);

        // average mean random number
        uniformAverage += (1. / (1. + i)) * (u - uniformAverage);
        binomialAverage += (1. / (1. + i)) * (b - binomialAverage);
        normalAverage += (1. / (1. + i)) * (n - normalAverage);
        exponentialAverage += (1. / (1. + i)) * (e - exponentialAverage);

        // draw new seed from global random generator
        seed = rand.nextLong();/*from  www .  ja  v a2 s  .  c o m*/
    }

    assertEquals(0.5, uniformAverage, 0.001);
    assertEquals(0.5, binomialAverage, 0.001);
    assertEquals(0.0, normalAverage, 0.001);
    assertEquals(0.25, exponentialAverage, 0.001);
}

From source file:uk.bl.wa.hadoop.mapred.ReservoirSamplingReducer.java

@Override
public void reduce(Text key, Iterator<Text> values, OutputCollector<Text, Text> output, Reporter reporter)
        throws IOException {

    Text item;//from  w w w.j  av a  2  s  .c o  m
    long numItemsSeen = 0;
    Vector<Text> reservoir = new Vector<Text>();
    RandomDataGenerator random = new RandomDataGenerator();
    // Fix the seed so repoducible by default:
    random.reSeed(defaultSeed);

    // Iterate through all values:
    while (values.hasNext()) {
        item = values.next();

        if (reservoir.size() < numSamples) {
            // reservoir not yet full, just append
            reservoir.add(item);
        } else {
            // find a sample to replace
            long rIndex = random.nextLong(0, numItemsSeen);
            if (rIndex < numSamples) {
                reservoir.set((int) rIndex, item);
            }
        }
        numItemsSeen++;
    }

    // Choose the output:
    Text outKey = key;
    OutputCollector<Text, Text> collector;
    int pos = key.find("__");
    if (pos == -1) {
        collector = output;
    } else {
        String[] fp = key.toString().split("__");
        collector = getCollector(fp[0], fp[1], reporter);
        outKey = new Text(fp[1]);
    }

    // Now output the sample:
    for (Text sto : reservoir) {
        collector.collect(outKey, sto);
    }
}

From source file:uk.bl.wa.hadoop.mapreduce.ReservoirSamplingReducer.java

@Override
protected void reduce(Text key, Iterable<Text> values, Reducer<Text, Text, Text, Text>.Context context)
        throws IOException, InterruptedException {

    long numItemsSeen = 0;
    Vector<Text> reservoir = new Vector<Text>();
    RandomDataGenerator random = new RandomDataGenerator();
    // Fix the seed so reproducible by default:
    random.reSeed(defaultSeed);

    // Iterate through all values:
    for (Text item : values) {
        // Fill the reservoir:
        if (reservoir.size() < numSamples) {
            // reservoir not yet full, just append
            reservoir.add(item);/*from  www  .  ja va 2 s .co m*/
        } else {
            // find a sample to replace
            long rIndex = random.nextLong(0, numItemsSeen);
            if (rIndex < numSamples) {
                reservoir.set((int) rIndex, item);
            }
        }
        numItemsSeen++;
    }

    // Now output the sample:
    for (Text sto : reservoir) {
        context.write(key, sto);
    }
}