生产n个定长不重复随机码
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class ExchangeCodeUtil{
private static final char[] charArr = "0123456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ".toCharArray();
public static List<String> generateExchangeCode(int cpId, int codeNum){
List<String> codeList = new ArrayList<>();
int size = (codeNum+"").length();
while (codeList.size()<codeNum){
int index = generateRandomNumber(4+size);
int index2 = generateRandomNumber(4);
String num =index2+""+cpId+index;
String code = convert10To62(Long.parseLong(num));
if (!codeList.contains(code)){
codeList.add(code);
}
}
return codeList;
}
public static int generateRandomNumber(int n) {
Random random = new Random();
int min = (int) Math.pow(10, n - 1);
int max = (int) Math.pow(10, n) - 1;
return random.nextInt(max - min + 1) + min;
}
public static String convert10To62(long number) {
boolean negative = false;
if (number == 0) {
return "0";
}
if (number < 0) {
number = -number;
negative = true;
}
long remainder = number;
StringBuilder result = new StringBuilder(0);
while (remainder != 0) {
long quotient = remainder / charArr.length;
result.append(charArr[(int)((remainder - quotient * charArr.length))]);
remainder = quotient;
}
return negative ? "-" + result.reverse().toString() : result.reverse().toString();
}
public static void main(String[] args) {
System.out.println(generateExchangeCode(654,1000));
}
}