public class RandomUtil extends Object
Modifier and Type | Field and Description |
---|---|
static String |
BASE_CHAR
用于随机选的字符
|
static String |
BASE_CHAR_NUMBER
用于随机选的字符和数字(包括大写和小写字母)
|
static String |
BASE_CHAR_NUMBER_LOWER
用于随机选的字符和数字(小写)
|
static String |
BASE_NUMBER
用于随机选的数字
|
Constructor and Description |
---|
RandomUtil() |
Modifier and Type | Method and Description |
---|---|
static SecureRandom |
createSecureRandom(byte[] seed)
创建
SecureRandom ,类提供加密的强随机数生成器 (RNG) |
static ThreadLocalRandom |
getRandom()
获取随机数生成器对象
ThreadLocalRandom是JDK 7之后提供并发产生随机数,能够解决多个线程发生的竞争争夺。 |
static Random |
getRandom(boolean isSecure)
获取随机数产生器
|
static SecureRandom |
getSecureRandom()
获取SHA1PRNG的
SecureRandom ,类提供加密的强随机数生成器 (RNG)注意:此方法获取的是伪随机序列发生器PRNG(pseudo-random number generator) 相关说明见:https://stackoverflow.com/questions/137212/how-to-solve-slow-java-securerandom |
static SecureRandom |
getSecureRandom(byte[] seed)
获取SHA1PRNG的
SecureRandom ,类提供加密的强随机数生成器 (RNG)注意:此方法获取的是伪随机序列发生器PRNG(pseudo-random number generator) 相关说明见:https://stackoverflow.com/questions/137212/how-to-solve-slow-java-securerandom |
static SecureRandom |
getSecureRandomStrong()
获取algorithms/providers中提供的强安全随机生成器
注意:此方法可能造成阻塞或性能问题 |
static SecureRandom |
getSHA1PRNGRandom(byte[] seed)
获取SHA1PRNG的
SecureRandom ,类提供加密的强随机数生成器 (RNG)注意:此方法获取的是伪随机序列发生器PRNG(pseudo-random number generator),在Linux下噪声生成时可能造成较长时间停顿。 |
static BigDecimal |
randomBigDecimal()
获得指定范围内的随机数[0, 1)
|
static BigDecimal |
randomBigDecimal(BigDecimal limit)
获得指定范围内的随机数 [0,limit)
|
static BigDecimal |
randomBigDecimal(BigDecimal minInclude,
BigDecimal maxExclude)
获得指定范围内的随机数
|
static boolean |
randomBoolean()
获得随机Boolean值
|
static byte[] |
randomBytes(int length)
随机bytes
|
static char |
randomChar()
随机字母或数字,小写
|
static char |
randomChar(String baseString)
随机字符
|
static char |
randomChinese()
随机汉字('一'-'鿿')
|
static DateTime |
randomDate(Date baseDate,
DateField dateField,
int min,
int max)
以给定日期为基准,随机产生一个日期
|
static DateTime |
randomDay(int min,
int max)
以当天为基准,随机产生一个日期
|
static double |
randomDouble()
获得随机数[0, 1)
|
static double |
randomDouble(double limit)
获得指定范围内的随机数 [0,limit)
|
static double |
randomDouble(double minInclude,
double maxExclude)
获得指定范围内的随机数
|
static double |
randomDouble(double minInclude,
double maxExclude,
int scale,
RoundingMode roundingMode)
获得指定范围内的随机数
|
static double |
randomDouble(double limit,
int scale,
RoundingMode roundingMode)
获得指定范围内的随机数
|
static double |
randomDouble(int scale,
RoundingMode roundingMode)
获得指定范围内的随机数
|
static <T> T |
randomEle(List<T> list)
随机获得列表中的元素
|
static <T> T |
randomEle(List<T> list,
int limit)
随机获得列表中的元素
|
static <T> T |
randomEle(T[] array)
随机获得数组中的元素
|
static <T> T |
randomEle(T[] array,
int limit)
随机获得数组中的元素
|
static <T> List<T> |
randomEleList(List<T> source,
int count)
随机获得列表中的一定量的元素,返回List
此方法与 randomEles(List, int) 不同点在于,不会获取重复位置的元素 |
static <T> List<T> |
randomEles(List<T> list,
int count)
随机获得列表中的一定量元素
|
static <T> Set<T> |
randomEleSet(Collection<T> collection,
int count)
随机获得列表中的一定量的不重复元素,返回Set
|
static float |
randomFloat()
获得随机数[0, 1)
|
static float |
randomFloat(float limitExclude)
获得指定范围内的随机数 [0,limit)
|
static float |
randomFloat(float minInclude,
float maxExclude)
获得指定范围内的随机数[min, max)
|
static int |
randomInt()
获得随机数int值
|
static int |
randomInt(int limitExclude)
获得指定范围内的随机数 [0,limit)
|
static int |
randomInt(int minInclude,
int maxExclude)
获得指定范围内的随机数
|
static int |
randomInt(int min,
int max,
boolean includeMin,
boolean includeMax)
获得指定范围内的随机数
|
static int[] |
randomInts(int length)
创建指定长度的随机索引
|
static long |
randomLong()
获得随机数
|
static long |
randomLong(long limitExclude)
获得指定范围内的随机数 [0,limit)
|
static long |
randomLong(long minInclude,
long maxExclude)
获得指定范围内的随机数[min, max)
|
static long |
randomLong(long min,
long max,
boolean includeMin,
boolean includeMax)
获得指定范围内的随机数
|
static char |
randomNumber()
随机数字,数字为0~9单个数字
|
static String |
randomNumbers(int length)
获得一个只包含数字的字符串
|
static String |
randomString(int length)
获得一个随机的字符串(只包含数字和字符)
|
static String |
randomString(String baseString,
int length)
获得一个随机的字符串
|
static String |
randomStringLowerWithoutStr(int length,
String elemData)
获得一个随机的字符串(只包含数字和小写字母) 并排除指定字符串
|
static String |
randomStringUpper(int length)
获得一个随机的字符串(只包含数字和大写字符)
|
static String |
randomStringWithoutStr(int length,
String elemData)
获得一个随机的字符串(只包含数字和字母) 并排除指定字符串
|
static <T> WeightRandom<T> |
weightRandom(Iterable<WeightRandom.WeightObj<T>> weightObjs)
带有权重的随机生成器
|
static <T> WeightRandom<T> |
weightRandom(WeightRandom.WeightObj<T>[] weightObjs)
带有权重的随机生成器
|
public static final String BASE_NUMBER
public static final String BASE_CHAR
public static final String BASE_CHAR_NUMBER_LOWER
public static final String BASE_CHAR_NUMBER
public static ThreadLocalRandom getRandom()
注意:此方法返回的ThreadLocalRandom
不可以在多线程环境下共享对象,否则有重复随机数问题。
见:https://www.jianshu.com/p/89dfe990295c
ThreadLocalRandom
public static SecureRandom createSecureRandom(byte[] seed)
SecureRandom
,类提供加密的强随机数生成器 (RNG)seed
- 自定义随机种子SecureRandom
public static SecureRandom getSecureRandom()
SecureRandom
,类提供加密的强随机数生成器 (RNG)相关说明见:https://stackoverflow.com/questions/137212/how-to-solve-slow-java-securerandom
SecureRandom
public static SecureRandom getSecureRandom(byte[] seed)
SecureRandom
,类提供加密的强随机数生成器 (RNG)相关说明见:https://stackoverflow.com/questions/137212/how-to-solve-slow-java-securerandom
seed
- 随机数种子SecureRandom
createSecureRandom(byte[])
public static SecureRandom getSHA1PRNGRandom(byte[] seed)
SecureRandom
,类提供加密的强随机数生成器 (RNG)相关说明见:https://stackoverflow.com/questions/137212/how-to-solve-slow-java-securerandom
seed
- 随机数种子SecureRandom
public static SecureRandom getSecureRandomStrong()
SecureRandom
public static Random getRandom(boolean isSecure)
isSecure
- 是否为强随机数生成器 (RNG)Random
getSecureRandom()
,
getRandom()
public static boolean randomBoolean()
public static byte[] randomBytes(int length)
length
- 长度public static int randomInt()
Random.nextInt()
public static int randomInt(int limitExclude)
limitExclude
- 限制随机数的范围,不包括这个数Random.nextInt(int)
public static int randomInt(int minInclude, int maxExclude)
minInclude
- 最小数(包含)maxExclude
- 最大数(不包含)public static int randomInt(int min, int max, boolean includeMin, boolean includeMax)
min
- 最小数max
- 最大数includeMin
- 是否包含最小值includeMax
- 是否包含最大值public static int[] randomInts(int length)
length
- 长度public static long randomLong()
ThreadLocalRandom.nextLong()
public static long randomLong(long limitExclude)
limitExclude
- 限制随机数的范围,不包括这个数ThreadLocalRandom.nextLong(long)
public static long randomLong(long minInclude, long maxExclude)
minInclude
- 最小数(包含)maxExclude
- 最大数(不包含)ThreadLocalRandom.nextLong(long, long)
public static long randomLong(long min, long max, boolean includeMin, boolean includeMax)
min
- 最小数max
- 最大数includeMin
- 是否包含最小值includeMax
- 是否包含最大值public static float randomFloat()
ThreadLocalRandom.nextFloat()
public static float randomFloat(float limitExclude)
limitExclude
- 限制随机数的范围,不包括这个数public static float randomFloat(float minInclude, float maxExclude)
minInclude
- 最小数(包含)maxExclude
- 最大数(不包含)ThreadLocalRandom.nextFloat()
public static double randomDouble(double minInclude, double maxExclude)
minInclude
- 最小数(包含)maxExclude
- 最大数(不包含)ThreadLocalRandom.nextDouble(double, double)
public static double randomDouble(double minInclude, double maxExclude, int scale, RoundingMode roundingMode)
minInclude
- 最小数(包含)maxExclude
- 最大数(不包含)scale
- 保留小数位数roundingMode
- 保留小数的模式 RoundingMode
public static double randomDouble()
ThreadLocalRandom.nextDouble()
public static double randomDouble(int scale, RoundingMode roundingMode)
scale
- 保留小数位数roundingMode
- 保留小数的模式 RoundingMode
public static double randomDouble(double limit)
limit
- 限制随机数的范围,不包括这个数ThreadLocalRandom.nextDouble(double)
public static double randomDouble(double limit, int scale, RoundingMode roundingMode)
limit
- 限制随机数的范围,不包括这个数scale
- 保留小数位数roundingMode
- 保留小数的模式 RoundingMode
public static BigDecimal randomBigDecimal()
public static BigDecimal randomBigDecimal(BigDecimal limit)
limit
- 最大数(不包含)public static BigDecimal randomBigDecimal(BigDecimal minInclude, BigDecimal maxExclude)
minInclude
- 最小数(包含)maxExclude
- 最大数(不包含)public static <T> T randomEle(List<T> list)
T
- 元素类型list
- 列表public static <T> T randomEle(List<T> list, int limit)
T
- 元素类型list
- 列表limit
- 限制列表的前N项public static <T> T randomEle(T[] array)
T
- 元素类型array
- 列表public static <T> T randomEle(T[] array, int limit)
T
- 元素类型array
- 列表limit
- 限制列表的前N项public static <T> List<T> randomEles(List<T> list, int count)
T
- 元素类型list
- 列表count
- 随机取出的个数public static <T> List<T> randomEleList(List<T> source, int count)
randomEles(List, int)
不同点在于,不会获取重复位置的元素T
- 元素类型source
- 列表count
- 随机取出的个数public static <T> Set<T> randomEleSet(Collection<T> collection, int count)
T
- 元素类型collection
- 列表count
- 随机取出的个数IllegalArgumentException
- 需要的长度大于给定集合非重复总数public static String randomString(int length)
length
- 字符串的长度public static String randomStringUpper(int length)
length
- 字符串的长度public static String randomStringWithoutStr(int length, String elemData)
length
- 字符串的长度elemData
- 要排除的字符串,如:去重容易混淆的字符串,oO0、lL1、q9Q、pP,区分大小写public static String randomStringLowerWithoutStr(int length, String elemData)
length
- 字符串的长度elemData
- 要排除的字符串,如:去重容易混淆的字符串,oO0、lL1、q9Q、pP,不区分大小写public static String randomNumbers(int length)
length
- 字符串的长度public static String randomString(String baseString, int length)
baseString
- 随机字符选取的样本length
- 字符串的长度public static char randomChinese()
public static char randomNumber()
public static char randomChar()
public static char randomChar(String baseString)
baseString
- 随机字符选取的样本public static <T> WeightRandom<T> weightRandom(WeightRandom.WeightObj<T>[] weightObjs)
T
- 随机对象类型weightObjs
- 带有权重的对象列表WeightRandom
public static <T> WeightRandom<T> weightRandom(Iterable<WeightRandom.WeightObj<T>> weightObjs)
T
- 随机对象类型weightObjs
- 带有权重的对象列表WeightRandom
public static DateTime randomDay(int min, int max)
min
- 偏移最小天,可以为负数表示过去的时间(包含)max
- 偏移最大天,可以为负数表示过去的时间(不包含)Copyright © 2024. All rights reserved.