import java.util.*;
/**
* author: GoL
* time: 2018-06-12
*/
public class randomGenerateUtils {
private static final String[] number = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
private static final String[] lower = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"};
private static final String[] upper = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
public static void test(String[] args) {
Date start = new Date();
random(50000, 5); //长度为5的50000个不重复随机数
Date end = new Date();
System.out.println("耗时:" + (end.getTime() - start.getTime())/1000 + "秒");
}
public static List<String> random (int number, int length) {
if ((int)Math.pow(length, 64) < number) {
System.out.println("长度为" + length + "的随机数总数小于需求总数" + number);
return Collections.EMPTY_LIST;
}
Set<String> set = new HashSet<>(number);
Random r = new Random();
while (set.size() < number) {
String string = randomGenerate(r, length);
if (!set.add(string)) {
System.out.println("当前随机数【" + string + "】已存在!");
} else {
System.out.println("当前个数:" + set.size());
}
}
return new ArrayList<>(set);
}
private static String randomGenerate(Random r, int length) {
StringBuilder builder = new StringBuilder(length);
for (int i = 0, len = length; i < len; i++) {
int idx = r.nextInt(3);
String[] chars = randomChars(idx);
builder.append(randomChar(chars, r));
}
return builder.toString();
}
private static String[] randomChars(int idx) {
if (idx == 0) {
return lower;
}
if (idx == 1) {
return upper;
}
return number;
}
private static String randomChar(String[] chars, Random r) {
return chars[r.nextInt(chars.length - 1)];
}
}
这里只是提供一种思路
如果帮到你,请点个赞吧 O(∩_∩)O~