赞
踩
在日常编程中,我们可能会需要使用随机数进行一些功能的实现,下面我就介绍两个生成随机数的方法:
Math.random()方法
java.,util.Random类
例如:
1) (int)(Math.random()*n):生成[0,n)之间的随机数
2) m+( int )(Math.random()n):生成[m,n)之间的随机数
3) (char)(char1+Math.random()(char2-char1+1)) :生成[char1,char2)之间的随机字符
使用示例如下:
public class Test { public static int RandomNum1(int num1,int num2) //任意int型 { int s=(int)num1+(int)(Math.random()*(num2-num1)); if(s%2==0) return s; else return s+1; } public static double RandomNum2(double num1,double num2) //任意double型 { return (double)(num1+(double) (Math.random()*(num2-num1))); } public static char RandomChar(char char1,char char2) //任意字符 { return (char)(char1+Math.random()*(char2-char1+1)); } public static void main(String[] args) { System.out.println("2~23之间任意一个int型偶数:"+RandomNum1(2,23)); System.out.println("3~4之间任意一个double型随机数:"+RandomNum2(3,4)); System.out.println("a~h之间任意一个字符:"+RandomChar('a','h')); } }
使用方法如下:
1)Random r=new random(); 创建一个Random对象
2)Random r= new Random(seeValue) ; r对象在实例化时设置随机数生成器的种子seeValue
使用示例如下:
还有更多random类提供的方法可供选择使用,有兴趣的可以自己尝试
public class Test {
public static void main(String[] args) {
Random r=new Random(); //对象
System.out.println("随机产生一个整数:"+r.nextInt());
System.out.println("随机产生一个大于0小于10的整数:"+r.nextInt(10));
System.out.println("随机产生一个布尔型的值:"+r.nextBoolean());
System.out.println("随机产生一双精度值:"+r.nextDouble());
System.out.println("随机产生一个概率密度为高斯分布的双精度值:"+r.nextGaussian());
System.out.println("随机产生一个浮点型的值:"+r.nextFloat());
}
}
对于大数的操作,常会以字符串的形式传入,并使用以下两个类操作:
使用BigInteger操作大整数
使用BigDecimal指定小数的保留位数
注意: BigInteger是在java.math包中
使用示例:
import java.math.BigInteger; public class Test { public static void main(String[] args) { BigInteger big1 = new BigInteger("123456789"); BigInteger big2 = new BigInteger("987654321"); System.out.println("加法操作:" + big2.add(big1)) ; // 加法操作 System.out.println("减法操作:" + big2.subtract(big1)) ; // 减法操作 System.out.println("乘法操作:" + big2.multiply(big1)) ; // 乘法操作 System.out.println("除法操作:" + big2.divide(big1)) ; // 除法操作 System.out.println("最大数:" + big2.max(big1)) ; // 求出最大数 System.out.println("最小数:" + big2.min(big1)) ; // 求出最小数 BigInteger result[] = big2.divideAndRemainder(big1) ; // 求出余数的除法操作 System.out.println("商是:" + result[0] + ";余数是:" + result[1]) ; } }
由上面的运算结果可以看出,BigInteger的divide()方法本身只是把最终的商保存下来了,但是如果两个数不能整除,余数就会被省略。我们期望余数也能展示出来,那么就要用divideAndRemainder()方法来获得结果和余数了。
注意: BigDecimal是在java.math包中
使用示例:
import java.math.BigDecimal; public class Test { public static void main(String[] args) { System.out.println("加法运算:" + MyMath.round(MyMath.add(10.345,3.333),1)) ; System.out.println("减法运算:" + MyMath.round(MyMath.sub(10.345,3.333),3)) ; System.out.println("乘法运算:" + MyMath.round(MyMath.mul(10.345,3.333),4)) ; System.out.println("除法运算:" + MyMath.div(10.345,3.333,3)) ; } } class MyMath{ public static double add(double d1,double d2){ // 进行加法计算 BigDecimal b1 = new BigDecimal(d1) ; BigDecimal b2 = new BigDecimal(d2) ; return b1.add(b2).doubleValue() ; } public static double sub(double d1,double d2){ // 进行减法计算 BigDecimal b1 = new BigDecimal(d1) ; BigDecimal b2 = new BigDecimal(d2) ; return b1.subtract(b2).doubleValue() ; } public static double mul(double d1,double d2){ // 进行乘法计算 BigDecimal b1 = new BigDecimal(d1) ; BigDecimal b2 = new BigDecimal(d2) ; return b1.multiply(b2).doubleValue() ; } public static double div(double d1,double d2,int len){ // 进行除法计算 BigDecimal b1 = new BigDecimal(d1) ; BigDecimal b2 = new BigDecimal(d2) ; return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ; } public static double round(double d,int len){ // 进行四舍五入 BigDecimal b1 = new BigDecimal(d) ; BigDecimal b2 = new BigDecimal(1) ; // 技巧 return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ; } }
使用BigDecimal可以指定好四舍五入的精确位置,还是非常方便的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。