三--随机数:
1.Math.random()方法:在Math类中存在一个random()方法,用于产生随机数字,这个方法默认生成大于等于0.0小雨1.0的double型随机数,即0<=Math .random()<1.0 , 虽然Math.random()方法只可以产生0~1之间的double类型数字,其实只要在Math.random()语句上稍加处理,就可以使用这个方法善生任意范围的随机数:
(1)(int)(Marh.random()*n) 返回大于等于0小于n之间的随机数
(2)m+( int )(Math.random()*n) 返回大于等于m小于m+n(不包括m+n)之间的随机数
package a;
public class a {
public static int GetEvenNum(double num1,double num2)
{
int s=(int)num1+(int)(Math.random()*(num2-num1));
if(s%2==0)
{
return s;
}
else
return s+1;
}
public static void main(String[] args)
{
System.out.println("2~32之间任意一个偶数: "+GetEvenNum(2,32));
}
}
控制台输出结果:
2~32之间任意一个偶数: 4
2.使用Math类的random()方法也可以随机生成字符,,可以使用如下代码,生成‘a’~‘z’之间的字符:
(char)('a'+Marh.random()*('z'-'a'+1));
(char)(char1+Math.random()*(char2-char1+1));
package a;
public class a {
public static char fun(char char1,char char2)
{
return (char)(char1+Math.random()*(char2-char1+1));
}
public static void main(String [] args)
{
System.out.println("任意小写字符 "+fun('a','z'));
System.out.println("任意大写字符 "+fun('A','Z'));
System.out.println("0到9任意数字 "+fun('0','9'));
}
}
控制台输出结果:
任意小写字符 x
任意大写字符 W
0到9任意数字 9
(1)Random r=new random(); r是指Random对象
同时也可以在实例化Random类对象是,设置随机数生成器的种子:
(2)Random r= new Random(seeValue) r是指Random类对象, seedValue:随机数生成器的种子
****在Random类中提供各种数据类型随机数的方法:
package a;
import java.util.Random;
public class a {
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.nextFloat());
System.out.println("随机产生一个概率密度为高斯分布的双精度值: "+r.nextGaussian());
}
}
控制台输出结果:
随机产生一个整数: 1440689419
随机产生一个大于等于0小于10的整数: 4
随机产生一个布尔型的值: true
随产生一个双精度的值; 0.561123901919533
随机产生一个浮点型的值: 0.56350034
随机产生一个概率密度为高斯分布的双精度值: 0.139858257986313
四:大数字:
package a;
import java.math.BigInteger;
public class a {
public static void main(String [] args)
{
BigInteger bigInstance=new BigInteger("4");//实例化一个大数字
System.out.println("加法操作: "+bigInstance.add(new BigInteger("2")));
System.out.println("减法操作: "+bigInstance.subtract(new BigInteger("2")));
System.out.println("乘法操作: "+bigInstance.multiply(new BigInteger("2")));
System.out.println("除法操作: "+bigInstance.divide(new BigInteger("2")));
System.out.println("求余操作: "+bigInstance.divideAndRemainder(new BigInteger("3"))[1]);
System.out.println("取商操作: "+bigInstance.divideAndRemainder(new BigInteger("3"))[0]);
System.out.println("做2次方操作: "+bigInstance.pow(2));
System.out.println("取相反操作: "+bigInstance.negate());
}
}
控制台输出结果:
加法操作: 6
减法操作: 2
乘法操作: 8
除法操作: 2
求余操作: 1
取商操作: 1
做2次方操作: 16
取相反操作: -4
package a;
import java.math.BigDecimal;
public class a {
static final int location=10;
public static BigDecimal add(double value1,double value2){
BigDecimal b1=new BigDecimal(Double.toString(value1));
BigDecimal b2=new BigDecimal(Double.toString(value2));
return b1.add(b2);
}
public static BigDecimal sub(double value1,double value2){
BigDecimal b1=new BigDecimal(Double.toString(value1));
BigDecimal b2=new BigDecimal(Double.toString(value2));
return b1.subtract(b2);
}
public static BigDecimal mul(double value1,double value2){
BigDecimal b1=new BigDecimal(Double.toString(value1));
BigDecimal b2=new BigDecimal(Double.toString(value2));
return b1.multiply(b2);
}
public static BigDecimal div(double value1,double value2){
return div(value1,value2,location);
}
public static BigDecimal div(double value1,double value2,int b){
if(b<0){
System.out.println("b值必须大于等于0");
}
BigDecimal b1=new BigDecimal(Double.toString(value1));
BigDecimal b2=new BigDecimal(Double.toString(value2));
return b1.divide(b2,b,BigDecimal.ROUND_HALF_UP);
}
public static void main(String[] args) {
a b=new a();//注意这里的a是类名
System.out.println("两个数字相加结果:"+b.add(-7.5, 8.9));
System.out.println("两个数字相减结果:"+b.sub(-7.5, 8.9));
System.out.println("两个数字相乘结果:"+b.mul(-7.5, 8.9));
System.out.println("两个数字相除结果,结果小数后保留10位:"+b.div(10, 2));
System.out.println("两个数字相除,结果保留小数后5位:"+b.div(-7.5, 8.9,5));
}
}
控制台输出结果:
两个数字相加结果:1.4
两个数字相减结果:-16.4
两个数字相乘结果:-66.75
两个数字相除结果,结果小数后保留10位:5.0000000000
两个数字相除,结果保留小数后5位:-0.84270