package cn.itcast.shujujiegou.Random1;
/**
* Created by likailong on 2016/10/13.
*/
public class Random1 {
private static final int A=48271;
private static final int M=2147483647;
private static final int Q=M/A;
private static final int R=M%A;
private int state;
public Random1(){
state= (int) (System.currentTimeMillis()%Integer.MAX_VALUE);
}
public int randomInt(){
int tmpState=A*(state%Q)-R*(state/Q);
if(tmpState>=0)
state=tmpState;
else
state=tmpState+M;
return state;
}
}
package cn.itcast.shujujiegou.Random1;
import com.sun.org.apache.regexp.internal.RE;
/**
* Created by likailong on 2016/10/13.
*/
public class Random48 {
private static final long A=25_214_903_917L;
private static final long B=48;
private static final long C=1L;
private static final long M=(1L<<B);
private static final long MASK=M-1;
private long state;
public Random48(){
state=System.nanoTime()&MASK;
}
public int randomInt(){
return next(32);
}
public double random0_1(){
return ((long)next(26)<<27)+next(27)/(double)(1L<<53);
}
private int next(int bits) {
if(bits<=0||bits>32)
throw new IllegalArgumentException();
state=(A*state+C)&MASK;
return (int)state>>>(B-bits);
}
}