**Math.random()**是令系统随机产生大于等于0.0,小于1.0的伪随机double值。假设:产生一个1到4的变量,num = Math.random()*3+1;
Random 类就是含有有参数和无参数两种的构造,其中不含参数的构造方法是每次将当前的系统时间作为种子,而含参数构造是使用一个固定值(参数)作为种子,种子也就是Random生成随机数时所使用的参数。每次使用时先创建一个Random对象,也叫随机数生成器,然后调用Random.next**()方法获取数值。
Random类的注意事项:
- 随机数是种子经过计算生成的。
- Random类中不含参数的构造函数每次都是使用的当前时间作为种子,随机性更强;而含参数的构造函数是伪随机的,更有可预见性。
- 具有相同种子值得Random对象生成的随机数相同;种子值不同,产生的随机数不再一致。
Math类的源码显示出Math.random()内部调用的方法就是Random类中的nextDouble()方法,此刻也就明确了文章一开始Math.random()返回的是double类型值。
new Random().nextInt(5); 就是要返回的随机数的边界,也就是随机数的范围是0——5之间的整数
Random类
package dome04;
/*使用:
* 获取一个随机的int数字(范围是int的所有范围,有正负两种)
* 获取一个随机的int数字(参数代表了范围,左闭右开区间)
* int nun = r.nextInt(3);
* 实际含义就是0-2*/
import java.util.Random;
import java.util.function.DoubleToIntFunction;
public class Dome04Random {
public static void main(String[] args) {
int n =5;
Random r = new Random();
//本来的范围是【0,n),整体+1之后就是【1,n】
int result = r.nextInt(n) + 1;
System.out.println(result);
}
}