public class RandomUtils
extends java.lang.Object
本工具类中统一以ThreadLocalRandom为基础的封装
| 构造器和说明 |
|---|
RandomUtils() |
| 限定符和类型 | 方法和说明 |
|---|---|
static boolean |
isSuccess(double rate)
判定一次随机事件是否成功.
|
static boolean |
isSuccess(float rate)
判定一次随机事件是否成功.
|
static boolean |
isSuccessByPercentage(int rate)
判定一次百分比的随机事件是否成功.
|
static boolean |
isSuccessByPermillage(int rate)
判定一次千分比的随机事件是否成功.
|
static boolean |
nextBoolean()
返回一个随机Boolean值.
|
static int |
nextInt(int bound)
返回一个0到指定区间的随机数字.
|
static int |
nextInt(int origin,
int bound)
返回一个指定区间的随机数字.
|
static long |
nextLong(int origin,
int bound)
返回一个指定区间的随机数字.
|
static long |
nextLong(long bound)
返回一个0到指定区间的随机数字.
|
static <T> T |
randomByWeight(java.util.List<T> data,
java.util.function.ToIntFunction<? super T> weightFunction)
在指定集合中按权重随机出一个元素.
|
static <T> java.util.List<T> |
randomByWeight(java.util.List<T> data,
java.util.function.ToIntFunction<? super T> weightFunction,
int num)
在指定集合中按权重随机出指定数量个元素.
|
static <K> K |
randomByWeight(java.util.Map<K,java.lang.Integer> data)
在指定集合中按权重随机出一个元素.
|
static <T> T |
randomList(java.util.List<T> list)
在指定集合中随机出一个元素.
|
static <T> java.util.List<T> |
randomList(java.util.List<T> source,
int num)
从一个List集合中随机出指定数量的元素.
|
public static boolean nextBoolean()
public static int nextInt(int bound)
0 <= random < bound
bound - 最大值(不包含)public static int nextInt(int origin,
int bound)
origin <= random < bound
origin - 最小值(包含)bound - 最大值(不包含)public static long nextLong(long bound)
0 <= random < bound
bound - 最大值(不包含)public static long nextLong(int origin,
int bound)
origin <= random < bound
origin - 最小值(包含)bound - 最大值(不包含)public static boolean isSuccess(float rate)
如果rate>=1,则百分百返回true.
如果rate<=0,则百分百返回false.
rate - 成功率public static boolean isSuccess(double rate)
如果rate>=1,则百分百返回true.
如果rate<=0,则百分百返回false.
rate - 成功率public static boolean isSuccessByPercentage(int rate)
参数自动转化为百分比单位,就是除100
RandomUtils.isSuccessByPercentage(rate) = RandomUtils.isSuccess(rate / 100D)
rate - 成功率/100Dpublic static boolean isSuccessByPermillage(int rate)
参数自动转化为千分比单位,就是除1000
RandomUtils.isSuccessByPermillage(rate) = RandomUtils.isSuccess(rate / 1000D)
rate - 成功率/1000Dpublic static <T> T randomList(java.util.List<T> list)
所以元素无权重的随机.
T - 要随机集合里的元素类型list - 指定集合public static <T> java.util.List<T> randomList(java.util.List<T> source,
int num)
source = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
random(source, 5) = [5, 3, 6, 7, 2]
T - 要随机集合里的元素类型source - List集合num - 指定数量public static <K> K randomByWeight(java.util.Map<K,java.lang.Integer> data)
K为元素,如果是自定义对象记得重写HashCode和equals.
V为权重,机率为V/(sum(All))
K - 要随机的元素类型,也是Map的Keydata - 随机集合public static <T> T randomByWeight(java.util.List<T> data,
java.util.function.ToIntFunction<? super T> weightFunction)
权重,机率为V/(sum(All))
T - 要随机的元素类型data - 随机集合weightFunction - 元素中权重方法public static <T> java.util.List<T> randomByWeight(java.util.List<T> data,
java.util.function.ToIntFunction<? super T> weightFunction,
int num)
权重,机率为V/(sum(All))
T - 要随机的元素类型data - 随机集合weightFunction - 元素中权重方法num - 指定数量