Math类:
java.lang包中的Math类也称数学类,是一个工具类。其中包含了许多用来进行科学计算的类方法,涉及大多数学函数,这些方法可以通过类名直接调用。此外还提供了两个静态数学常量Math.PI和Math.E,分别代表:E和PI。
下面是常用的一些方法:
int abs(int i) 求整数的绝对值(另有针对long、float、double的方法)
double ceil(double d) 求小于d的最小整数
double floor(double d) 不大于d的最小整数
int max(int i1,int i2) 求两个整数中的最大整数(另有针对long、float、double的方法)
int min(int i1,int i2) 求两个整数中的最小整数(另有针对long、float、double的方法)
double random() 产生0~1之间的随机数
int round(float f) 求最靠近f的整数
double sqrt(double a) 求平方根
Random类:
Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。
相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。
下面介绍一下Random类的使用,以及如何生成指定区间的随机数组以及实现程序中要求的几率。
1、Random类包含两个构造方法,下面依次进行介绍:
a、public Random() 该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象。
b、public Random(long seed) 该构造方法可以通过制定一个种子数进行创建。
示例代码:
Random r = new Random();
Random r1 = new Random(10);
再次强调:种子数只是随机算法的起源数字,和生成的随机数字的区间无关。
2、方法:
a、public boolean nextBoolean()
该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。
b、public double nextDouble()
该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。
c、public int nextInt()
该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-231到231-1之间。
d、public int nextInt(int n)
该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。
e、public void setSeed(long seed)
该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。