package org.restcomm.media.rtcp;
import java.util.Random;
public class XSRandom extends Random {
private static final long serialVersionUID = -668678943206857357L;
private long seed;
public XSRandom() {
this.seed = System.nanoTime();
}
/**
* Implementation of George Marsaglia's elegant Xorshift random generator
* 30% faster and better quality than the built-in {@link Random}
*/
@Override
protected int next(int nbits) {
long x = this.seed;
x ^= (x << 21);
x ^= (x >>> 35);
x ^= (x << 4);
this.seed = x;
x &= ((1L << nbits) - 1);
return (int) x;
}
}