package de.invesdwin.util.math.random;
import java.util.Random;
import javax.annotation.concurrent.Immutable;
import org.apache.commons.math3.random.RandomGenerator;
@Immutable
public class RandomGeneratorAdapter implements RandomGenerator {
private final Random delegate;
public RandomGeneratorAdapter(final Random delegate) {
this.delegate = delegate;
}
@Override
public void setSeed(final int seed) {
setSeed((long) seed);
}
@Override
public void setSeed(final int[] seed) {
// the following number is the largest prime that fits in 32 bits (it is 2^32 - 5)
final long prime = 4294967291L;
long combined = 0L;
for (final int s : seed) {
combined = combined * prime + s;
}
setSeed(combined);
}
@Override
public void setSeed(final long seed) {
delegate.setSeed(seed);
}
@Override
public void nextBytes(final byte[] bytes) {
delegate.nextBytes(bytes);
}
@Override
public int nextInt() {
return delegate.nextInt();
}
@Override
public int nextInt(final int n) {
return delegate.nextInt(n);
}
@Override
public long nextLong() {
return delegate.nextLong();
}
@Override
public boolean nextBoolean() {
return delegate.nextBoolean();
}
@Override
public float nextFloat() {
return delegate.nextFloat();
}
@Override
public double nextDouble() {
return delegate.nextDouble();
}
@Override
public double nextGaussian() {
return delegate.nextGaussian();
}
}