Math.random()和Random的使用

Java中Math.random()和Random的使用

java.lang.Math.Random;
Math.random()是java中lang包下的Math类给我们提供的一个方法随机生成一 个大于等于 0.0 且小于 1.0 即取值范围是[0.0,1.0)的左闭右开区间的伪随机 double类型的一个值,使用这个方法可以不需要导包,具体实现参考下面代码:

public class RandomTest1{
	public static void main(String[] args){
		//顶一个double类型的变量接收这个随机数
		double num1 = Math.Random();
		//打印结果  0.7561672297766494
		System.out.println(num1);
	}
}

java.util.Random;
随机数是种子经过计算生成的
Random类中不含参的构造函数每次都是使用当前时间作为种子,随机性更强;而含参数的构造函数是以参数为种子产生的伪随机数,更有可预见性。
具有相同种子值的Random对象生成的随机数相同;种子值不同,产生的随机数不再一致。
Math.random()方法中内部调用的方法就是Random类中的nextDouble()方法。
使用功能:
引用.nextInt(); 产生一个int范围内的随机整数
引用.nextInt(整数n); 产生一个 [0,n) 随机整数
引用.nextDouble() [0.0,1.0)之间的随机小数
使用前需要导包,代码实现:

//导包
import java.util.Random;

public class RandomTest2{
	public static void main(String[] args){
		Random random = new Random();
		//使用对象的引用调用方法,例如nextInt();
		//产生一个int范围内的随机整数
		int num2 = random .nextInt();
		System.out.println(num2);			
	}
}

当然像上述两种产生随机数,并不能满足实际的需求,往往我们在使用随机数的情景一般都是在一定的范围内的,所以为了满足更多的需求,也可以对产生的随机数的范围和类型进行操作:
Math.random();
要想对其产生的随机数进行变化,例如:更改取值范围,不能直接在()里进行操作
而是:
范围:[0,max]
(int)(Math.random()(max+1))
范围:[min,max]
(int)(Math.random()
(max-min+1)+min)
对已产生的随机数进行改变*一个值,改变最大范围 +一个值,改变最大最小区间
使用功能:
Math.round(数值) 四舍五入
Math.max(值2,值1) 求最大
Math.min(值2,值1) 求最小
代码实现:

public class MathDemo01 { 	
	public static void main(String[] args){ 
		double num=Math.random();
		System.out.println(num3);
			
		System.out.println(Math.round(0.49));  //只根据小数点后一位进行四舍五入
		System.out.println(Math.max(1.1,2.2));  
		System.out.println(Math.min(1.1,2.2));  
		
		//[0,max]   (int)(Math.random()*(max+1))
		//num=Math.random()*5;
		//System.out.println((int)num);
		
		
		//[min,max]   (int)(Math.random()*(max-min+1)+min)
		int num4 = (int)(Math.random()*(5+1-1)+1);
		System.out.println(num4);
	}
}

Random();实现随机数的方法,总结一个公式和Math.random();差不多,只不过对其操作的位置不同如下:
[0,max) ran.nextInt(max);
[0,max] ran.nextInt(max+1);
[min,max] ran.nextInt(max-min+1)+min;
[min,max) ran.nextInt(max-min)+min;
代码实现:

import java.util.Random;
public class RandomDemo01{ 
	public static void main(String[] args){ 
		//2.创建类型的引用
		Random ran=new Random();
		//3.使用功能:
		int num=ran.nextInt();
		System.out.println(num);
		
		//[0,5]
		num=ran.nextInt(6);
		System.out.println(num);
		//[4,5]
		num=ran.nextInt(5+1)+3;  //[0,5]+4  -->[3,8]
		
		//[3,7]
		num=ran.nextInt(7-3+1)+3;
		System.out.println(num);
	} 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值