java初学乍练之不导包求指定范围随机数

思路:

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可将区间边缘包含在取值范围内
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值