public SmileRandom(long seed) { this.rng = new UniversalGenerator(seed); }
/** * Generator a random number uniformly distributed in [0, 1). * @return a pseudo random number */ public double nextDouble() { return real.nextDouble(); }
/** * Generate n uniform random numbers in the range [0, 1) * @param d array of random numbers to be generated */ public void nextDoubles(double[] d) { real.nextDoubles(d); }
/** * Initialize Random with a specified integer seed */ public UniversalGenerator(int seed) { setSeed(seed); }
@Override public int next(int numbits) { return nextInt() >>> (32 - numbits); }
/** * Initialize Random with default seed. */ public UniversalGenerator() { setSeed(DEFAULT_RANDOM_SEED); }
public SmileRandom() { this.rng = new UniversalGenerator(); }
/** * Initialize Random with a specified long seed */ public UniversalGenerator(long seed) { setSeed(seed); }
@Override public long nextLong() { return (long) Math.floor(Long.MAX_VALUE * (2 * nextDouble() - 1.0)); } }
/** * Generate n uniform random numbers in the range [lo, hi) * @param lo lower limit of range * @param hi upper limit of range * @param d array of random numbers to be generated */ public void nextDoubles(double[] d, double lo, double hi) { real.nextDoubles(d); double l = hi - lo; int n = d.length; for (int i = 0; i < n; i++) { d[i] = lo + l * d[i]; } }
/** * Initialize with default random number generator engine. */ public Random() { real = new UniversalGenerator(); twister = new MersenneTwister(); }
/** * Initialize the random generator with a seed. */ public void setSeed(long seed) { real.setSeed(seed); twister.setSeed(seed); }
@Override public int nextInt() { return (int) Math.floor(Integer.MAX_VALUE * (2 * nextDouble() - 1.0)); }
/** * Initialize with given seed for default random number generator engine. */ public Random(long seed) { real = new UniversalGenerator(seed); twister = new MersenneTwister(seed); }
@Override public int nextInt(int n) { if (n <= 0) { throw new IllegalArgumentException("n must be positive"); } return (int) (nextDouble() * n); }