FastRandom.java
package com.hypixel.hytale.math.util;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
public class FastRandom extends Random {
private static final long multiplier = 25214903917L;
private static final long addend = 11L;
private static final long mask = 281474976710655L;
private long seed;
public FastRandom() {
this.seed = initialScramble(ThreadLocalRandom.current().nextLong());
}
public FastRandom(long seed) {
this.seed = initialScramble(seed);
}
public void setSeed(long seed) {
this.seed = initialScramble(seed);
}
private static long initialScramble(long seed) {
return (seed ^ 25214903917L) & 281474976710655L;
}
protected int next(int bits) {
long seed = this.seed;
seed = seed * 25214903917L + 11L & 281474976710655L;
this.seed = seed;
return (int)(seed >>> 48 - bits);
}
public synchronized double nextGaussian() {
throw new UnsupportedOperationException();
}
}