思路:
Math类里有个求随机数的静态方法:random(). 它的返回值是[0, 1)范围内的double.
代码:
经测试,以下代码在正数范围内有效
public class RandomInt{
public static void main(String[] args){
//Random r = new Random();
int a = 78, b = 25;
int rnd = randomIntNoImport(a, b);
System.out.println("25~78之间的随机数:"+rnd);
int max = a<b?a:b, min = a>b?a:b, i = 0;
for(i=0; i<123456; i++){
rnd = randomIntNoImport(a, b);
if(max<rnd){
max = rnd;
}
if(min>rnd){
min = rnd;
}
}
System.out.println("经过"+i+"次统计, "+"25~78之间的随机数最小值: "+min+" 最大值: "+max);
}
public static int randomIntNoImport(int a, int b){
int m = a<b?a:b;//1.
int n = a>b?a:b;//2.确定较大数和较小数
double l = Math.log10(n);//1.
int c = (int)Math.ceil(l);//2.
int e = (int)Math.pow(10, c);//3.random()方法的值范围在[0, 1),这三步确定a和b的大范围
return (int)(Math.random()*e)%(n-m+1)+m;//获得随机数后取模可得等跨距区间,再将区间平移m,可得所需区间, +1可将区间边缘包含在取值范围内
}
}