public class MultipleIdGenerator {
private static final String[] SURNAMES = {“赵”, “钱”, “孙”, “李”, “周”, “吴”, “郑”, “王”, “冯”, “陈”, “褚”, “卫”};
private static final String[] NAMES = {“伟”, “芳”, “娜”, “敏”, “静”, “丽”, “强”, “磊”, “军”, “洋”, “勇”, “艳”};
private static final String[] PHONE_PREFIXES = {“130”, “131”, “132”, “133”, “134”, “135”, “136”, “137”, “138”, “139”,“150”, “151”, “152”, “157”, “158”, “159”,
“172”, “178”,“182”, “183”, “184”, “187”, “188”, “198”,“171”, “175”, “176”, “185”, “186”};
/**
* 车架号
*
* @return
*/
public static String generateRandomVIN() {
int VIN_LENGTH = 17;
String CHARACTERS = “ABCDEFGHJKLMNPRSTUVWXYZ1234567890”;
StringBuilder vin = new StringBuilder(VIN_LENGTH); Random random = new Random(); for (int i = 0; i < VIN_LENGTH; i++) { int index = random.nextInt(CHARACTERS.length()); vin.append(CHARACTERS.charAt(index)); } return vin.toString(); } /** * 生成随机身份证号 * * @return */ public static String generateRandomID() { String randomIDNo = getRandomIDNo(); return randomIDNo; } /** * 生成随机手机号 * * @return */ public static String generateRandomPhone() { Random random = new Random(); StringBuilder phone = new StringBuilder(); // 3位运营商代码 phone.append(PHONE_PREFIXES[random.nextInt(PHONE_PREFIXES.length)]); // 8位随机数字 for (int i = 0; i < 8; i++) { phone.append(random.nextInt(10)); } return phone.toString(); } /** * 生成随机姓名 * * @return */ public static String generateRandomName() { Random random = new Random(); String surname = SURNAMES[random.nextInt(SURNAMES.length)]; String name = GetRandomInfosUtil.getRandomChar(); return surname + name; } private static final String[] PROVINCES = { "京", "津", "沪", "渝", "冀", "豫", "云", "辽", "黑", "湘", "皖", "鲁", "新", "苏", "浙", "赣", "鄂", "桂", "甘", "晋", "蒙", "陕", "吉", "闽", "贵", "粤", "青", "藏", "川", "宁", "琼" }; private static final String LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; /** * 生成随机车牌号 * * @return */ public static String generateRandomLicensePlate() { Random random = new Random(); StringBuilder licensePlate = new StringBuilder(); // 1位省份汉字 String province = PROVINCES[random.nextInt(PROVINCES.length)]; licensePlate.append(province); // 1位城市字母 char cityLetter = LETTERS.charAt(random.nextInt(LETTERS.length())); licensePlate.append(cityLetter); // 5位字母或数字 for (int i = 0; i < 5; i++) { char character = CHARACTERS.charAt(random.nextInt(CHARACTERS.length())); licensePlate.append(character); } return licensePlate.toString(); } private static final String CHARACTERS2 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; private static final String[] EMAIL_DOMAINS = {"gmail.com", "yahoo.com", "hotmail.com", "outlook.com", "qq.com"}; private static final int EMAIL_USERNAME_LENGTH = 8; private static final int BANK_CARD_LENGTH = 12; /** * 生成随机邮箱 * * @return */ public static String generateRandomEmail() { Random random = new Random(); StringBuilder email = new StringBuilder(); // 生成随机用户名 for (int i = 0; i < EMAIL_USERNAME_LENGTH; i++) { char character = CHARACTERS2.charAt(random.nextInt(CHARACTERS2.length())); email.append(character); } // 添加域名 String domain = EMAIL_DOMAINS[random.nextInt(EMAIL_DOMAINS.length)]; email.append("@").append(domain); return email.toString(); } /** * 生成随机银行卡号 * * @return */ public static String generateRandomBankCard() { Random random = new Random(); StringBuilder bankCard = new StringBuilder(); // 生成16位随机数字 for (int i = 0; i < BANK_CARD_LENGTH; i++) { bankCard.append(random.nextInt(10)); } return "622202" + bankCard.toString() +"0"; } /** * 生成随机的统一社会信用代码 * @return 符合规则的统一社会信用代码 */ // 统一社会信用代码字符集 private static final String BASE_CHAR = "0123456789ABCDEFGHJKLMNPQRTUWXY"; // 加权因子 private static final int[] WEIGHT = {1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28}; private static final Random RANDOM = new Random(); public static String generateCreditCode() { // 第一步:生成前17位随机字符 StringBuilder codeBuilder = new StringBuilder(); for (int i = 0; i < 17; i++) { int index = RANDOM.nextInt(BASE_CHAR.length()); codeBuilder.append(BASE_CHAR.charAt(index)); } // 第二步:计算第18位校验码 char checkCode = calculateCheckCode(codeBuilder.toString()); codeBuilder.append(checkCode); return codeBuilder.toString(); } /** * 计算校验码 * @param prefix 前17位字符 * @return 校验码 */ private static char calculateCheckCode(String prefix) { if (prefix == null || prefix.length() != 17) { throw new IllegalArgumentException("前缀必须为17位字符"); } int sum = 0; for (int i = 0; i < 17; i++) { char c = prefix.charAt(i); int index = BASE_CHAR.indexOf(c); if (index == -1) { throw new IllegalArgumentException("包含无效字符: " + c); } sum += index * WEIGHT[i]; } int remainder = sum % 31; int checkIndex = (31 - remainder) % 31; return BASE_CHAR.charAt(checkIndex); } // 行政区划 private static final String[] ADMIN_DIVISIONS = { "北京市", "上海市", "广州市", "深圳市", "杭州市", "南京市", "成都市", "武汉市", "重庆市", "天津市", "苏州市", "西安市", "长沙市", "青岛市", "郑州市", "宁波市", "无锡市", "济南市", "佛山市", "南通市" }; // 常用字号(包含吉利字、行业相关字) private static final String[] FONT_SIZES = { "华", "泰", "鑫", "盛", "宏", "昌", "隆", "兴", "发", "源", "茂", "达", "恒", "通", "顺", "和", "安", "康", "瑞", "祥", "益", "丰", "利", "聚", "德", "信", "诚", "智", "慧", "博", "优", "佳", "新", "创", "科", "技", "联", "合", "众", "拓", "展", "远", "大", "中", "正", "光", "明", "日" }; // 行业表述 private static final String[] INDUSTRIES = { "科技", "信息技术", "电子", "软件", "网络", "通信", "数据", "智能", "贸易", "商务", "实业", "投资", "金融", "服务", "咨询", "管理", "文化", "传媒", "广告", "教育", "培训", "医疗", "健康", "生物", "医药", "化工", "材料", "建筑", "工程", "装饰", "房地产", "物流", "运输", "仓储", "餐饮", "食品", "农业", "环保", "能源", "机械" }; // 组织形式 private static final String[] ORGANIZATIONS = { "有限公司", "有限责任公司", "股份有限公司", "集团有限公司", "实业有限公司", "科技有限公司", "发展有限公司" }; /** * 生成随机企业名称 * @return 随机企业名称 */ public static String generateCompanyName() { // 随机选择行政区划(30%概率不包含行政区划) StringBuilder name = new StringBuilder(); if (RANDOM.nextDouble() > 0.3) { name.append(ADMIN_DIVISIONS[RANDOM.nextInt(ADMIN_DIVISIONS.length)]); } // 生成字号(2-4个字) int fontCount = 2 + RANDOM.nextInt(3); // 2,3,4 for (int i = 0; i < fontCount; i++) { name.append(FONT_SIZES[RANDOM.nextInt(FONT_SIZES.length)]); } // 随机选择行业 name.append(INDUSTRIES[RANDOM.nextInt(INDUSTRIES.length)]); // 随机选择组织形式 name.append(ORGANIZATIONS[RANDOM.nextInt(ORGANIZATIONS.length)]); return name.toString(); }
}
按照以上代码,写一个生成随机不重复渠道名称的方法,渠道的格式为自动化渠道001排序,每次调用生成一次,按序号生成