Java学习-Random类和Math类

Random类

1 、什么是Random类

此类的实例用于生成伪随机数
Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第N次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。

(注意:种子数只是随机算法的起源数字,和生成的随机数字的区间无关

2、Random类的使用步骤

查看类:

  • java.util.Random :该类需要 import导入使后使用。

查看构造方法

  • public Random() :创建一个新的随机数生成器。
  • public Random(long seed):该构造方法可以通过制定一个种子数进行创建。
Random r = new Random();
Random r1 = new Random(10);

查看成员方法
Random类中的方法比较简单,每个方法的功能也很容易理解。需要说明的是,Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的

  • public int nextInt() :返回一个伪随机数,范围在 0 (包括)和 指定值 n (不包括)之间的 int 值。

  • public boolean nextBoolean():该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率。

  • public double nextDouble():该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。

  • public int nextInt():该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-2^31到 2^31-1之间。

  • public int nextInt(int n):生成指定区间的int值,该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n

  • public void setSeed(long seed):该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。

3、具体应用

使用Random类,完成生成3个10以内的随机整数的操作

import java.util.Random; 
public class test { 
	public static void main(String[] args) { 
		//2. 创建键盘录入数据的对象 
		Random r = new Random(); 
		for(int i = 0; i < 3; i++){ 
			//3. 随机生成一个数据
			int number = r.nextInt(10); 
			//4. 输出数据 
			System.out.println("number:"+ number); 
			}
		} 		
}

获取1-n之间的随机数,包含n,代码如下:

//1. 导包 
 import java.util.Random; 
 public class test { 
	 public static void main(String[] args) {
		 int n = 50; 
		 // 创建对象 
		 Random r = new Random(); 
		 // 获取随机数 
		 int number = r.nextInt(n) + 1; 
		 // 输出随机数 
		 System.out.println("number:" + number); 
		 } 
 }

猜数字游戏: 游戏开始时,会随机生成一个1-100之间的整数 number 。玩家猜测一个数字 guessNumber ,会与 number 作比 较,系统提示大了或者小了,直到玩家猜中,游戏结束。

import java.util.Random;
import java.util.Scanner; 
public class test 
{ 
	public static void main(String[] args) {
		// 系统产生一个随机数1‐100之间的。 
		Random r = new Random(); 
		int number = r.nextInt(100) + 1;
		while(true){ 
			// 键盘录入我们要猜的数据 
			Scanner sc = new Scanner(System.in); 
			System.out.println("请输入你要猜的数字(1‐100):"); 
			int guessNumber = sc.nextInt(); 
			// 比较这两个数据(用if语句) 
			if (guessNumber > number) 
			{ 
				System.out.println("你猜的数据" + guessNumber + "大了"); 
			} else if (guessNumber < number) 
			{ System.out.println("你猜的数据" + guessNumber + "小了"); 
			} else 
			{ 
				System.out.println("恭喜你,猜中了"); 
				break; 
			}
		}
	}
}

Math类

1、概述

java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具 类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。

2、常用运算方法

  • Math.sqrt():计算平方根
  • Math.cbrt():计算立方根
  • Math.hypot(x,y):计算 (x的平方+y的平方)的平方根
  • Math.pow(a,b):计算a的b次方
  • Math.exp(x):计算e^x的值
  • Math.max():计算最大值 Math.min();//计算最小值
  • Math.abs():返回 double 值的绝对值。
  • Math.ceil():天花板的意思,返回大于等于参数的最小的整数
  • Math.floor():地板的意思,返回小于等于参数最大的整数
  • Math.random(): 取得一个大于或者等于0.0小于不等于1.0的随机数[0,1)
  • Math.rint(): 四舍五入 返回double值
  • Math.round(): 四舍五入 float时返回int值,double时返回long值
  • Math.nextUp(a): 返回比a大一点点的浮点数
  • Math.nextDown(a): 返回比a小一点点的浮点数
  • Math.nextAfter(a,b):返回(a,b)或(b,a)间与a相邻的浮点数 b可以比a小

欢迎持续关注!
个人博客站:jQueryZK Blog

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值