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. Linux之 xstart调用 x11vnc远程图形化桌面

    问题:用 xmanager 中的 xstart 启动界面,报x11无法打开 . 1. root调整x11参数,将其打开[root@localhost ~]# vi /etc/ssh/sshd_conf ...

  2. ffmpeg/ffplay 添加实时的时间水印 (转)

    右上角添加时间水印 ffmpeg -i 0.ts -vf drawtext="fontfile=arial.ttf:x=w-tw:fontcolor=white:fontsize=30:te ...

  3. Opencv2.2 移植到am335x-y开发板

    1.虚拟机上运行cmake-gui,报找不到文件,指示安装. 2.下载opencv2.2.0 http://opencv.org/downloads.html 3.cmake-gui,配置参考< ...

  4. CF 360E Levko and Game——贪心

    题目:http://codeforces.com/contest/360/problem/E 官方题解与证明:http://codeforces.com/blog/entry/9529 一条可以调整的 ...

  5. Django 组件-中间件

    中间件 中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好 ...

  6. 5月3日上课笔记-XML解析

    一.XML编程 1.xml编程的两种解析方式 1.1 dom解析 优点:一次加载,多次使用.可以方便的对xml文档进行增删改查 缺点:如果xml文档过大的话,加载的时候会比较占用内存空间比较大,消耗资 ...

  7. SHUTDOWN: waiting for active calls to complete

    Problem Description: ====================  You are attempting to shut down the database and the data ...

  8. Python basic (from learn python the hard the way)

    1. How to run the python file? python ...py 2. UTF-8 is a character encoding, just like ASCII. 3. ro ...

  9. 压测工具Locuse的使用

    我是听朋友提起的"蝗虫"(Locust),然而她不想用python,我就拿来试一试~ http的 各种压测工具也已经太多了,所以主要是试试locust在当前比较流行的rpc协议上的 ...

  10. PHP memcache client封装

    config.inc.php $CONFIG_MEMCACHE['default'] = array( //'127.0.0.1:11211:100', '10.9.20.73:11211:100', ...