List of usage examples for org.apache.commons.math3.random RandomDataGenerator reSeed
public void reSeed(long seed)
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); } }