☰
5.math类
2026/10/22 2:28:54 网站建设 项目流程

常用的math方法

1)abs 绝对值

2)pow 求幂

3)ceil 向上取整 // -1.8 -> -1.0, 4.5->5.0 返回>=该参数的最小整数(返回值double)

4)floor 向下取整 //-1.8 -> -2.0, 4.5->4.0 返回<=该参数的最大整数(返回值double)

5)round 四舍五入

6)sqrt 求开方

7)random 求随机数//思考:请写出获取a.b之间的一个随机整数b均为整数?

8)max求两个数的最大值

9)min求两个数的最小值

math.random 和 Random类

Math.random()和java.util.Random都是伪随机数工具,但用途和灵活性不同。

核心区别

对比项Math.random()java.util.Random
返回类型只能返回double,范围[0.0, 1.0)可返回int、long、double、boolean、float、Gaussian等
使用方式静态方法,直接调用需要创建对象
底层实现Java 中内部使用一个共享的Random实例自己维护随机数生成器状态
可控性不能设置种子可以new Random(seed),结果可复现
线程安全底层共享Random,线程安全但高并发有竞争Random方法线程安全,但多线程竞争下性能一般
适用场景简单生成[0,1)小数需要整数范围、种子、多种类型随机数
密码学安全否否

示例

  1. Math.random()
doubled=Math.random();// [0.0, 1.0)intn=(int)(Math.random()*10);// 0~9

生成[min, max)的整数:

intmin=5,max=10;intn=min+(int)(Math.random()*(max-min));// 5~9
  1. Random
importjava.util.Random;Randomrandom=newRandom();inta=random.nextInt();// 任意 intintb=random.nextInt(10);// 0~9doublec=random.nextDouble();// [0.0, 1.0)booleanflag=random.nextBoolean();

生成[min, max):

intmin=5,max=10;intn=random.nextInt(max-min)+min;// 5~9

设置种子

计算机里的“随机数”通常是伪随机数:它不是真正随机,而是通过一个确定算法算出来的。

种子(seed)就是这个算法的初始状态。

  • 不设置种子:通常用当前时间等信息作为种子,所以每次运行结果不同。
  • 设置相同种子:每次运行都会得到完全相同的随机数序列。
  • 设置不同种子:一般得到不同序列。

设置种子,结果可复现:

Randomr1=newRandom(123);//数字不一样只是代表不同的种子Randomr2=newRandom(123);//两个相同的种子,生成的数字一样System.out.println(r1.nextInt(100));System.out.println(r2.nextInt(100));// 相同

选择建议

选择建议

  • 只是要一个[0,1)小数:用Math.random()最简单。
  • 需要整数范围、布尔值、种子、可复现结果:用Random。
  • 多线程高并发:优先用ThreadLocalRandom。
importjava.util.concurrent.ThreadLocalRandom;intn=ThreadLocalRandom.current().nextInt(1,100);// [1,100)
  • 安全相关,如验证码、令牌、密码盐:不要用这两个,使用SecureRandom。
importjava.security.SecureRandom;SecureRandomsecureRandom=newSecureRandom();intn=secureRandom.nextInt(100);

总结

Math.random()是“只能生成[0,1)double 的便捷方法”;Random是“功能更完整、可控制种子的伪随机数类”。普通简单场景用Math.random(),需要更多随机类型和范围控制时用Random。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询