import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.math3.random.RandomDataGenerator; /**
* @ClassName: RandomUtil
* @Description: 随机数工具类
* (分别使用java.util.Random、Apache Common Math3、Apache Common Lang3、TreadLocalRandom)
*/
public class RandomUtil {
/**
* 随机数Int的生成
*/
// 随机数生成无边界的Int
public static int getRandomForIntegerUnbounded() {
int intUnbounded = new Random().nextInt();
System.out.println(intUnbounded);
return intUnbounded;
} // 生成有边界的Int
public static int getRandomForIntegerBounded(int min, int max) {
int intBounded = min + ((int) (new Random().nextFloat() * (max - min)));
System.out.println(intBounded);
return intBounded;
} // 包含1而不包含10
// 使用Apache Common Math3来生成有边界的Int
public static int getRandomForIntegerBounded2(int min, int max) {
int intBounded = new RandomDataGenerator().nextInt(min, max);
System.out.println(intBounded);
return intBounded;
} // 包含1且包含10
// 使用Apache Common Lang3的工具类来生成有边界的Int
public static int getRandomForIntegerBounded3(int min, int max) {
int intBounded = RandomUtils.nextInt(min, max);
System.out.println(intBounded);
return intBounded;
} // 使用TreadLocalRandom来生成有边界的Int,包含min而不包含max
public static int getRandomForIntegerBounded4(int min, int max) {
int threadIntBound = ThreadLocalRandom.current().nextInt(min, max);
System.out.println(threadIntBound);
return threadIntBound;
} /**
* 随机数Long的生成
*/
// 随机数生成无边界的Long
public static long getRandomForLongUnbounded() {
long unboundedLong = new Random().nextLong();
System.out.println(unboundedLong);
return unboundedLong;
} // 因为Random类使用的种子是48bits,所以nextLong不能返回所有可能的long值,long是64bits。
// 使用Random生成有边界的Long
public static long getRandomForLongBounded(long min, long max) {
long rangeLong = min + (((long) (new Random().nextDouble() * (max - min))));
System.out.println(rangeLong);
return rangeLong;
} // 使用Apache Commons Math3来生成有边界的Long(RandomDataGenerator类提供的生成随机数的方法)
public static long getRandomForLongBounded2(long min, long max) {
long rangeLong = new RandomDataGenerator().nextLong(min, max);
System.out.println(rangeLong);
return rangeLong;
} // 使用Apache Commons Lang3的工具类来生成有边界的Long(RandomUtils提供了对java.util.Random的补充)
public static long getRandomForLongBounded3(long min, long max) {
long longBounded = RandomUtils.nextLong(min, max);
System.out.println(longBounded);
return longBounded;
} // 使用ThreadLocalRandom生成有边界的Long
public static long getRandomForLongBounded4(long min, long max) {
long threadLongBound = ThreadLocalRandom.current().nextLong(min, max);
System.out.println(threadLongBound);
return threadLongBound;
} /**
* 随机数Float的生成
*/
// 随机数Float的生成生成0.0-1.0之间的Float随机数
public static float getRandomForFloat0To1() {
float floatUnbounded = new Random().nextFloat();
System.out.println(floatUnbounded);
return floatUnbounded;
} // 以上只会生成包含0.0而不包括1.0的float类型随机数生成有边界的Float随机数
public static float getRandomForFloatBounded(float min, float max) {
float floatBounded = min + new Random().nextFloat() * (max - min);
System.out.println(floatBounded);
return floatBounded;
} // 使用Apache Common Math来生成有边界的Float随机数
public static float getRandomForFloatBounded2(float min, float max) {
float randomFloat = new RandomDataGenerator().getRandomGenerator().nextFloat();
float generatedFloat = min + randomFloat * (max - min);
System.out.println(generatedFloat);
return generatedFloat;
} // 使用Apache Common Lang来生成有边界的Float随机数
public static float getRandomForFloatBounded3(float min, float max) {
float generatedFloat = RandomUtils.nextFloat(min, max);
System.out.println(generatedFloat);
return generatedFloat;
} // 使用ThreadLocalRandom生成有边界的Float随机数
// ThreadLocalRandom类没有提供 /**
* 随机数Double的生成
*/
// 生成0.0d-1.0d之间的Double随机数
public static double getRandomForDouble0To1() {
double generatorDouble = new Random().nextDouble();
System.out.println(generatorDouble);
return generatorDouble;
} // 与Float相同,以上方法只会生成包含0.0d而不包含1.0d的随机数生成带有边界的Double随机数
public static double getRandomForDoubleBounded(double min, double max) {
double boundedDouble = min + new Random().nextDouble() * (max - min);
System.out.println(boundedDouble);
return boundedDouble;
} // 使用Apache Common Math来生成有边界的Double随机数
public static double getRandomForDoubleBounded2(double min, double max) {
double boundedDouble = new RandomDataGenerator().getRandomGenerator().nextDouble();
double generatorDouble = min + boundedDouble * (max - min);
System.out.println(generatorDouble);
return generatorDouble;
} // 使用Apache Common Lang生成有边界的Double随机数
public static double getRandomForDoubleBounded3(double min, double max) {
double generatedDouble = RandomUtils.nextDouble(min, max);
System.out.println(generatedDouble);
return generatedDouble;
} // 使用ThreadLocalRandom生成有边界的Double随机数
public static double getRandomForDoubleBounded4(double min, double max) {
double generatedDouble = ThreadLocalRandom.current().nextDouble(min, max);
System.out.println(generatedDouble);
return generatedDouble;
}
}
 //相关依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<!-- commons-math3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.6.1</version>
</dependency>

Java-随机数工具类的更多相关文章

  1. Java开发工具类集合

    Java开发工具类集合 01.MD5加密工具类 import java.security.MessageDigest; import java.security.NoSuchAlgorithmExce ...

  2. Java Properties工具类详解

    1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...

  3. Java json工具类,jackson工具类,ObjectMapper工具类

    Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...

  4. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

  5. Java并发工具类 - CountDownLatch

    Java并发工具类 - CountDownLatch 1.简介 CountDownLatch是Java1.5之后引入的Java并发工具类,放在java.util.concurrent包下面 http: ...

  6. MinerUtil.java 爬虫工具类

    MinerUtil.java 爬虫工具类 package com.iteye.injavawetrust.miner; import java.io.File; import java.io.File ...

  7. MinerDB.java 数据库工具类

    MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...

  8. 小记Java时间工具类

    小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...

  9. Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie

    Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie >>>>>>>>>>>>& ...

  10. UrlUtils工具类,Java URL工具类,Java URL链接工具类

    UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...

随机推荐

  1. MySQL出现1030-Got error 28 from storage engine错误

    Navicat for MySQL出现1030-Got error 28 from storage engine错误  刚刚还能用这会儿就用不了了,估计是磁盘空间不足引起的! 在根目录/下执行命令:d ...

  2. jQuery 性能优化技巧

    原文地址:jQuery 性能优化技巧 博客地址:http://www.extlight.com 一.使用最新版本 jQuery 类库 二.合理使用选择器 # 推荐使用 $("#id" ...

  3. 生产环境LNMP (果图片)

    一. 下载一键安装包 LNMP   官方地址为:http://lnmp.org/ 登陆后运行:screen -S lnmp cd /usr/local/src wget -c http://soft. ...

  4. dd装机

    如何在 Linux 系统中使用 dd 命令而不会损毁你的磁盘 使用 Linux 中的 dd 工具安全.可靠地制作一个驱动器.分区和文件系统的完整镜像. _这篇文章节选自 Manning 出版社出版的图 ...

  5. Linux Shell read命令

    linux read 用法 1.基本读取 read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说).得到输入后,read命令将数据放入一个标准变量中.下面是 read命令 的最简单形 ...

  6. ElasticSearch读取查询结果(search)

    本文转载自:http://blog.csdn.net/wangxiaotongfan/article/details/46531729?locationNum=6 在es中所有的查询结果都会保存在Se ...

  7. Java-Runoob-高级教程:Java 数据结构

    ylbtech-Java-Runoob-高级教程:Java 数据结构 1.返回顶部 1. Java 数据结构 Java工具包提供了强大的数据结构.在Java中的数据结构主要包括以下几种接口和类: 枚举 ...

  8. jQuery笔记——插件

    验证插件 验证插件(validate.js),是一款验证常规表单数据合法性的插件.使用它,极大的解 放了在表单上繁杂的验证过程,并且错误提示显示的完善也增加了用户体验 插件都可以在JQueryUI 的 ...

  9. VMware Workstation Pro 12 创建虚拟机(安装Ubuntu)

    为了在VMware Workstation下创建一个虚拟机,折腾了大半天,现把比较顺利的创建办法记录下来: VMware Workstation版本: 创建步骤: 1.VMware Workstati ...

  10. Tkinter Colors(颜色)

          Tkinter Colors: Tkinter的代表与字符串的颜色.一般有两种方式来指定Tkinter的颜色 Tkinter的代表与字符串的颜色.一般有两种方式来指定Tkinter的颜色: ...