Math类

  1. //绝对值值运算:
  2. Math.abs(18.999); //返回19.999这个数的绝对值
  3. Math.abs(-12.58); // 返回-12.58这个数的绝对值,为12.58
  4. //取值运算:
  5. Math.signum(x); //如果x大于0则返回1.0,小于0则返回-1.0,等于0则返回0
  6. //取整运算:
  7. Math.ceil(-13.56); //返回最近的且大于这个数的整数, 为14.0
  8. Math.floor(-13.56); //返回最近的且小于这个数的整数, 为13.0
  9. Math.rint13.56); ////返回最接近这个数的整数,如果刚好居中,则取偶数,为14
  10. //对数运算:
  11. Math.log10(100); // 以10为底数的100的对数 ,为2
  12. //指数运算:
  13. Math.expm1(x); //e的x次幂 -
  14. Math.pow(a,b); //a的b次幂
  15. Math.scalb(x, y); //x*(2的y次幂)
  16. //二次方根运算:
  17. Math.sqrt(x); //x的二次方根
  18. //三次方根运算:
  19. Math.cbrt(x); //x的三次方根
  20. //返回较大值和较小值:
  21. Math.max(x, y); //返回x、y中较大的数
  22. Math.min(x, y); //返回x、y中较小的数
  23. //三角函数运算:
  24. Math.sin(α); //sin(α)的值
  25. Math.cos(α); //cos(α)的值
  26. Math.tan(α); //tan(α)的值
  27. //求角运算:
  28. Math.asin(x/z); //返回角度值[-π/2,π/2] arc sin(x/z)
  29. Math.acos(y/z); //返回角度值[0~π] arc cos(y/z)
  30. Math.atan(y/x); //返回角度值[-π/2,π/2] arctan(y/x)
  31. //随机值运算:
  32. Math.random(); //随机返回[0,1)之间的无符号double值

Random&ThreadLocalRandom类

Random类

Random 是一个线程安全类,理论上可以通过它同时在多个线程中获得互不相同的随机数,但是在多线程的场景下需要多个线程竞争同一个原子变量的更新操作,性能不佳。

多线程性能参见:https://www.imooc.com/article/29739

有两种构造方法:

  • Random():以当前系统时间作为种子。
  • Random(long seed):使用单个 long 型整数作为种子。
  1. public static void main(String[] args) {
  2. Random rand = new Random();
  3. //随机boolean值
  4. System.out.println(rand.nextBoolean()); //true
  5. //随机填充byte数组
  6. byte[] buffer = new byte[16];
  7. rand.nextBytes(buffer);
  8. //[106, -85, 66, 108, 93, -22, 114, -67, -97, -99, 34, 126, 3, 66, -25, 59]
  9. System.out.println(Arrays.toString(buffer));
  10. //随机[0.0, 1.0) 区间的double值
  11. System.out.println(rand.nextDouble()); //0.6032052834419511
  12. //随机[0.0, 1.0) 区间的float值
  13. System.out.println(rand.nextFloat()); //0.19521767
  14. //随机int范围的整数
  15. System.out.println(rand.nextInt()); //-1557426129
  16. //随机生成[0, 15)区间的整数
  17. System.out.println(rand.nextInt(15)); //6
  18. //随机long范围整数
  19. System.out.println(rand.nextLong()); //868994934892445287
  20. }

ThreadLocalRandom类(推荐)

ThreadLocalRandon 类是 JDK 1.7 新增的一个类,它是 Random 的增强版,在并发访问的环境下,使用它来代替 Random 可以减少多线程资源竞争,最终保证系统具有更好的线程安全性。ThreadLocalRandom 类提供了一个静态方法来获取当前线程的随机数生成器:

  1. ThreadLocalRandom rand = ThreadLocalRandom.current();

ThreadLocalRandom 方法的用法和 Random 基本类似,增加几个功能:

  1. //返回一个boolean类型的随机数
  2. public boolean nextBoolean();
  3. //随机填充一个byte数组
  4. public void nextBytes(byte[] bytes);
  5. //返回一个[0.0,1.0)范围的float随机数
  6. public float nextFloat();
  7. //返回一个[0.0,1.0)范围的double随机数
  8. public double nextDouble();
  9. //返回一个[0.0-bound)之间的double随机数
  10. public double nextDouble(double bound);
  11. //返回一个[origin-bound)之间的随机数
  12. public double nextDouble(double origin, double bound);
  13. //返回一个整型的伪随机数
  14. public int nextInt();
  15. //返回一个[0,bound)之间的随机数
  16. public int nextInt(int bound);
  17. //返回一个[origin,bound)之间的随机数
  18. public int nextInt(int origin, int bound);
  19. //返回一个long型随机数
  20. public long nextLong();
  21. //返回一个[0,bound)之间的随机数
  22. public long nextLong(long bound);
  23. //返回一个[origin,bound)之间的随机数
  24. public long nextLong(long origin, long bound);

参考

  1. https://blog.csdn.net/qq_33213136/article/details/76242273
  2. https://www.imooc.com/article/29739

Math&Random&ThreadLocalRandom类的更多相关文章

  1. Random类和ThreadLocalRandom类

    Random类和ThreadLocalRandom类 Random类用于生成一个伪随机数,他有两个构造方法:一个构造方法使用默认的种子(以当前时间作为种子),另一个构造方法需要显示传入一个long型整 ...

  2. java中ThreadLocalRandom类和Random类的使用

    package frank; import java.lang.*; import java.util.*;//工具类一般都在util里面 import java.util.concurrent.Th ...

  3. Random类、ThreadLocalRandom类

    Random和ThreadLocalRandom类均用于生成伪随机数. Random的构造函数: Random()     默认以系统当前时间为种子,相当于Random(System.currentT ...

  4. 常用类--Date日期类,SimpleDateFormat日期格式类,Calendar日历类,Math数学工具类,Random随机数类

    Date日期类 Date表示特定的时间,精确到毫秒; 构造方法: public Data() public Date(long date) 常用方法: public long getTime() pu ...

  5. Random类和Math.random()方法

    一.Random类的定义Random类位于 java.util 包中,主要用于生成伪 随机数Random类将 种子数 作为随机算法的起源数字,计算生成伪随机数,其与生成的随机数字的区间无关创建Rand ...

  6. 调用类java.lang.Math的成员方法"public static double random"运算下面表达式10000次,统计其中生成的整数0,1,2,.....20的个数分别是多少,并输出统计结果.(int)(Math.random()*20+0.5)

    public class Test2 { public static void main(String args[]){ int num; int count[]=new int[21]; for(i ...

  7. Math.random与java.util.Random的差别

    今天在做一道习题时想到了Math.random()与Random类有什么区别,查阅了一些资料,感觉讲的不是太好. 首先两者的区别是一个是方法,一个是类. 其实前者的实现借助与后者.大家可以看一下Mat ...

  8. [JS]Math.random()

    参考网址:http://www.soulteary.com/2014/07/05/js-math-random-trick.html [JS]Math.random()的二三事 看到题目,如果大家平时 ...

  9. random.nextInt()与Math.random()基础用法

    相关文章:关于Random(47)与randon.nextInt(100)的区别 1.来源 random.nextInt() 为 java.util.Random类中的方法: Random类中还提供各 ...

随机推荐

  1. 如何查看linux中的ssh端口开启状态

    netstat -anp |grep 22 netstat -anp |grep sshlsof -i :22

  2. Python--day41--递归锁Rlock

    1,递归锁Rlock:递归锁是为了解决死锁问题,且递归锁的特点是在同一个线程中可以被acquire()多次 多个acquire()在递归锁中不会阻塞,而互斥锁Lock就会阻塞 代码示例: from t ...

  3. jstack简介

    jstack:Java进程中线程的堆栈信息跟踪工具 功能简介 jstack常用来打印Java进程/core文件/远程调试端口的Java线程堆栈跟踪信息,包含当前虚拟机中所有线程正在执行的方法堆栈信息的 ...

  4. H3C 基于ACL的包过滤技术

  5. Redis - 命令行工具

    使用Redis内置的命令行工具 redis-cli一些便捷的命令: 1.执行单条命令 平时在访问 Redis 服务器,一般都会使用 redis-cli 进入交互模式,然后一问一答来读写服务器,这种情况 ...

  6. H3C DHCP租约更新

  7. vue-上传文件

    <label for="exampleInputFile">头像</label> <img :src=" imgsrc != '' ? im ...

  8. thinkjs解决跨域

    this.header("Access-Control-Allow-Origin", "*"); 将上面的代码在请求发送之前执行即可 如果不知道放在哪里 可以参 ...

  9. js实现instanceof

        instanceof 是通过原型链判断的,A instanceof B, 在A的原型链中层层查找,是否有原型等于B.prototype,如果一直找到A的原型链的顶端null,仍然不等于B.pr ...

  10. quartz关闭DBUG日志

    引用了Quartz组件后,打印日志时,整天都有相应的调试信息打印出来,严重影响了查找日志效率,谷歌一番后,修改nlog配置文件即可 <?xml version="1.0" e ...