package com.rambo.tools;
import java.util.Random;
public final class JVMRandom extends Random {
private static final long serialVersionUID = 1L;
private static final Random SHARED_RANDOM = new Random();
private boolean constructed = false;
public JVMRandom() {
this.constructed = true;
}
public synchronized void setSeed(long seed) {
if (this.constructed) {
throw new UnsupportedOperationException();
}
}
public synchronized double nextGaussian() {
throw new UnsupportedOperationException();
}
public void nextBytes(byte[] byteArray) {
throw new UnsupportedOperationException();
}
public int nextInt() {
return nextInt(2147483647);
}
public int nextInt(int n) {
return SHARED_RANDOM.nextInt(n);
}
public long nextLong() {
return nextLong(9223372036854775807L);
}
public static long nextLong(long n) {
if (n <= 0L) {
throw new IllegalArgumentException("Upper bound for nextInt must be positive");
}
if ((n & -n) == n) {
return next63bits() >> 63 - bitsRequired(n - 1L);
}
long bits;
long val;
do {
bits = next63bits();
val = bits % n;
} while (bits - val + (n - 1L) < 0L);
return val;
}
public boolean nextBoolean() {
return SHARED_RANDOM.nextBoolean();
}
public float nextFloat() {
return SHARED_RANDOM.nextFloat();
}
public double nextDouble() {
return SHARED_RANDOM.nextDouble();
}
private static long next63bits() {
return SHARED_RANDOM.nextLong() & 0xFFFFFFFF;
}
private static int bitsRequired(long num) {
long y = num;
int n = 0;
for (; ; ) {
if (num < 0L) {
return 64 - n;
}
if (y == 0L) {
return n;
}
n++;
num <<= 1;
y >>= 1;
}
}
public static void main(String[] args) {
JVMRandom jvmRandom = new JVMRandom();
System.out.println("1.100以内:" +jvmRandom.nextInt(100));
}
}