private double normalize(double value, double normalizationLowerBound, double normalizationUpperBound) { double boundedValue = boundValue(value); // normalize boundedValue to new range double normalizedRange = normalizationUpperBound - normalizationLowerBound; return (((boundedValue - lower) * normalizedRange) / innerRange) + normalizationLowerBound; }
@Override public int nextInt(int bound) { return (int) normalize(delegate.sample(), 0, bound); }
/** * Creates normal distribution. * * @return Instance of {@link NormalDistribution}. */ @SuppressWarnings({ "unchecked", "rawtypes" }) protected NormalDistribution createNormalDistribution() { List<Number> args = (List) pop(); if (args.isEmpty()) { return new NormalDistribution(); } if (args.size() != 4) { throw new RuntimeException("Normal distribution must have following parameters:" + " mean, standard deviation, lower bound and upper bound."); } return new NormalDistribution(args.get(0).doubleValue(), args.get(1).doubleValue(), args.get(2).doubleValue(), args.get(3).doubleValue()); }
@Override public int nextInt(int lower, int upper) { return (int) normalize(delegate.sample(), lower, upper); }
/** * Creates normal distribution. * * @return Instance of {@link NormalDistribution}. */ @SuppressWarnings({ "unchecked", "rawtypes" }) protected NormalDistribution createNormalDistribution() { List<Number> args = (List) pop(); if (args.isEmpty()) { return new NormalDistribution(); } if (args.size() != 4) { throw new RuntimeException("Normal distribution must have following parameters:" + " mean, standard deviation, lower bound and upper bound."); } return new NormalDistribution(args.get(0).doubleValue(), args.get(1).doubleValue(), args.get(2).doubleValue(), args.get(3).doubleValue()); }
@Override public long nextLong(long lower, long upper) { return (int) normalize(delegate.sample(), lower, upper); }
private double normalize(double value, double normalizationLowerBound, double normalizationUpperBound) { double boundedValue = boundValue(value); // normalize boundedValue to new range double normalizedRange = normalizationUpperBound - normalizationLowerBound; return (((boundedValue - lower) * normalizedRange) / innerRange) + normalizationLowerBound; }
@Override public boolean nextBoolean() { return ((long) normalize(delegate.sample(), 0, 100)) % 2 == 0; }
@Override public double nextDouble(double lower, double upper) { return normalize(delegate.sample(), lower, upper); }
@Override public int nextInt(int bound) { return (int) normalize(delegate.sample(), 0, bound); }
@Override public long nextLong(long lower, long upper) { return (int) normalize(delegate.sample(), lower, upper); }
@Override public double nextDouble(double lower, double upper) { return normalize(delegate.sample(), lower, upper); }
@Override public int nextInt(int lower, int upper) { return (int) normalize(delegate.sample(), lower, upper); }
@Override public long nextLong(long bound) { return (long) normalize(delegate.sample(), 0, bound); }
@Override public boolean nextBoolean() { return ((long) normalize(delegate.sample(), 0, 100)) % 2 == 0; }
@Override public long nextLong(long bound) { return (long) normalize(delegate.sample(), 0, bound); }