Java-随机数工具类
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-随机数工具类的更多相关文章
- Java开发工具类集合
Java开发工具类集合 01.MD5加密工具类 import java.security.MessageDigest; import java.security.NoSuchAlgorithmExce ...
- Java Properties工具类详解
1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...
- Java json工具类,jackson工具类,ObjectMapper工具类
Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- Java并发工具类 - CountDownLatch
Java并发工具类 - CountDownLatch 1.简介 CountDownLatch是Java1.5之后引入的Java并发工具类,放在java.util.concurrent包下面 http: ...
- MinerUtil.java 爬虫工具类
MinerUtil.java 爬虫工具类 package com.iteye.injavawetrust.miner; import java.io.File; import java.io.File ...
- MinerDB.java 数据库工具类
MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...
- 小记Java时间工具类
小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...
- Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie
Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie >>>>>>>>>>>>& ...
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
随机推荐
- Centos6.5 恢复误删的系统面板
在CentOS6.5下往面板上拖应用程序时,手贱了,点了"Delete This Panel".结果就悲剧了~面板不见了! 从网上搜了一下解决方法,列举一下. 1.新建面板 如果下 ...
- bzoj 5120 [2017国家集训队测试]无限之环——网络流
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5120 旋转的话相当于去掉一个插头.新增一个插头,所以在这两个插头之间连边并带上费用即可. 网 ...
- protobuf新增message报错:类型已存在
问题现象:在一个已有的proto文件(RecommendResponse.proto)中新增一个message(BookList),用maven编译proto文件时报错: E:\workspace\m ...
- c++ 异常处理(3)
<C++编码规范与指导>一文,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了.没想到时隔几年以后才有机会把这个尾巴补完 :-). 还是那句开场白:“在恰当的场合使用恰当的特性” ...
- php的闭包
闭包是指在创建时封装周围状态的函数,即使闭包所在的环境的不存在了,闭包中封装的状态依然存在. 匿名函数其实就是没有名称的函数,匿名函数可以赋值给变量,还能像其他任何PHP函数对象那样传递.不过匿名函数 ...
- UEFI 启动GPT分区 Win10和Ubuntu16.04双系统安装
测试机器:联想小新锐7000 工具:UltraISO 系统下载 为Ubuntu分配空间 右键“我的电脑”——>“管理”——>“磁盘管理”,(win+x快捷键)选择一个有很大空闲空间的磁盘, ...
- Firewalld中的whitelist并不是规则白名单
原文地址:http://www.excelib.com/article/292/show whitelist的含义 白名单跟防火墙结合在一起大家很容易将其理解为规则白名单,不过在Firewalld中w ...
- Macbook Pro上C++编程
Xcode新建一个c/c++程序语言工程_百度经验 http://jingyan.baidu.com/article/e2284b2b63bdede2e6118d2a.html
- node 中的定时器, nextTick()和setImmediate()的使用
1.node中使用定时器的问题在于,它并非精确的.譬如setTimeout()设定一个任务在10ms后执行,但是在9ms后,有一个任务占用了5ms,再次轮到定时器时,已经耽误了4ms. 好了node中 ...
- Nginx not running with no error message
Nginx not running with no error message #!/bin/shecho "start"rm /etc/nginx/sites-enabled/d ...