Math.random() 方法:产生0~1间的一个double随机值。(可直接用) 还可以让random作为时间种子: 在java.util.Random类下,有:
Random r=new Random();
r.nextInt(100); //生成0~99之间的随机整数
还有,System类里有一个currentTimeMills()方法,返回一个从1970年1月1日0点0分0秒到目前的一个随机毫秒数。
[0,1]之间均匀分布的随机整数算法 设定一个基数base=256.0(一般取的2的整数倍),以及两常数a=17.0和b=139.0(这两个数按经验任取)。 r(i)=mod(a*r(i-1)+b,base) pi=r(i)/ base 其中,i=1,2,...... 而pi便是递推得到的第i个随机数(r(i)用数组代,为随机种子)
static double rand01(double[] r){
double base,a,b,p,temp1,temp2,temp3;
base=256.0; //基数
a=17.0;
b=139.0;
temp1=a*(r[0])+b; //算总值
temp2=(int)(temp1/base); //算商
temp3=temp1-temp2*base; //算余数
r[0]=temp3; //更新随机种子,被下一次使用
p=r[0]/base; //随机数
return p;
}
public static void main(String[] args){
int i;
double[] r={5.0};
for(i=0;i<10;i++){
System.out.printf("%10.5f\n",rand01(r));
}
System.out.printf("\n");
}
以上方法也可用来求[m,n]之间的随机浮点数:
m+(n-m)*rand01(r)
同样,也可求[m,n]之间均匀分布的随机整数:
m+(int)((n-m)*rand01(r))
当然,java中还有java.util.Random类:
import java.util.Random;
public class Text{
public static void main(String[] args){
Random rand=new Random(); //创建random对象
int result=rand.nextInt(10); //返回[0,10)不包括10
}
}