/** * Adds random jitter to {@code data} using deviates sampled from {@code dist}. * <p> * Note that jitter is applied in-place - i.e., the array * values are overwritten with the result of applying jitter.</p> * * @param data input/output data array - entries overwritten by the method * @param dist probability distribution to sample for jitter values * @throws NullPointerException if either of the parameters is null */ private static void jitter(double[] data, RealDistribution dist) { for (int i = 0; i < data.length; i++) { data[i] += dist.sample(); } }
/** {@inheritDoc} */ public double value() { return orig.value() + random.sample(); } };
@Override public double sample() { return numGen.sample(); } }
public double nextSample() { return distribution.sample(); } }
/** * Adds random jitter to {@code data} using deviates sampled from {@code dist}. * <p> * Note that jitter is applied in-place - i.e., the array * values are overwritten with the result of applying jitter.</p> * * @param data input/output data array - entries overwritten by the method * @param dist probability distribution to sample for jitter values * @throws NullPointerException if either of the parameters is null */ private static void jitter(double[] data, RealDistribution dist) { for (int i = 0; i < data.length; i++) { data[i] += dist.sample(); } }
/** {@inheritDoc} */ public double value() { return orig.value() + random.sample(); } };
@Override public double applyAsDouble(long value) { randomBypassAdapter.setSeed(value); double sample = distribution.sample(); return sample; } }
@Override public double sample(long seed) { dist.reseedRandomGenerator(seed); return dist.sample(); }
@Override public Double get(long seed) { distribution.reseedRandomGenerator(seed); return distribution.sample(); } }
@Override public Double get(long seed) { distribution.reseedRandomGenerator(seed); double val = distribution.sample(); if (outOfBoundStrategy == OutOfBoundStrategy.REDRAW) { while (!isInBounds(val)) { val = distribution.sample(); } } else if (val < lowerBound) { val = lowerBound; } else if (val >= upperBound) { val = upperBound; } return val; }
@Override public double applyAsDouble(long value) { murmur3F.reset(); bb.putLong(0,value); bb.position(0); murmur3F.update(bb.array()); long result= Math.abs(murmur3F.getValue()); randomBypassAdapter.setSeed(value); double sample = distribution.sample(); return sample; } }
/** * Return a random value from a normal distribution with the given mean and standard deviation * * @param mean * a double mean value * @param sd * a double standard deviation * @return a double sample */ public static double rNorm(double mean, double sd) { RealDistribution dist = new NormalDistribution(RANDOM.getRandomGenerator(), mean, sd, NormalDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY); return dist.sample(); }
/** * Return a random value from a normal distribution with the given mean and standard deviation * * @param mean * a double mean value * @param sd * a double standard deviation * @return a double sample */ public static double rNorm(double mean, double sd) { RealDistribution dist = new NormalDistribution(RANDOM.getRandomGenerator(), mean, sd, NormalDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY); return dist.sample(); }
/** * Return a random value from a normal distribution with the given mean and standard deviation * * @param mean * a double mean value * @param sd * a double standard deviation * @return a double sample */ public static double rNorm(double mean, double sd) { RealDistribution dist = new NormalDistribution(RANDOM.getRandomGenerator(), mean, sd, NormalDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY); return dist.sample(); }
/** * Returns an Array containing random values from a normal distribution with mean and std deviation specified * @param length the length for the array * @param mean the mean for sampling distribution * @param stdDev the standard deviation for sampling distribution * @return the newly created dense Array */ static Array<Double> randn(int length, double mean, double stdDev) { final RealDistribution dist = new NormalDistribution(mean, stdDev); return Array.of(Double.class, length).applyDoubles(v -> dist.sample()); }