import java.util.Random;
public class RandomDataGenerator {
private static final Random RANDOM = new Random();
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
private static final String EMAIL_DOMAINS[] = {"gmail.com", "yahoo.com", "hotmail.com", "outlook.com", "example.com"};
private static final String PHONE_PREFIXES[] = {"130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "147", "150", "151", "152", "157", "158", "159", "182", "183", "184", "187", "188", "130496"};
// 生成指定范围内的随机整数
public static int randomInt(int min, int max) {
return RANDOM.nextInt(max - min + 1) + min;
}
// 生成指定范围内的随机长整数
public static long randomLong(long min, long max) {
return RANDOM.nextLong() % (max - min + 1) + min;
}
// 生成指定范围内的随机浮点数
public static double randomDouble(double min, double max) {
return min + (max - min) * RANDOM.nextDouble();
}
// 生成随机布尔值
public static boolean randomBoolean() {
return RANDOM.nextBoolean();
}
// 生成指定长度的随机字符串
public static String randomString(int length) {
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++) {
int index = RANDOM.nextInt(characters.length());
sb.append(characters.charAt(index));
}
return sb.toString();
}
// 生成指定长度的随机字母字符串
public static String randomAlphabeticString(int length) {
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++) {
int index = RANDOM.nextInt(characters.length());
sb.append(characters.charAt(index));
}
return sb.toString();
}
// 生成指定长度的随机数字字符串
public static String randomNumericString(int length) {
String characters = "0123456789";
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++) {
int index = RANDOM.nextInt(characters.length());
sb.append(characters.charAt(index));
}
return sb.toString();
}
// 生成指定长度的随机 UUID 字符串
public static String randomUUID() {
return UUID.randomUUID().toString();
}
// 生成指定范围内的随机日期(以毫秒为单位)
public static long randomDate(long startMillis, long endMillis) {
return startMillis + (long) (RANDOM.nextDouble() * (endMillis - startMillis));
}
/**
* 生成指定开头并且随机长度的字符串
*
* @param prefix 指定的开头字符串
* @param minLength 最小长度(包括前缀)
* @param maxLength 最大长度(包括前缀)
* @return 生成的随机字符串
*/
public static String generateRandomStringWithPrefix(String prefix, int minLength, int maxLength) {
if (minLength < prefix.length() || maxLength < minLength) {
throw new IllegalArgumentException("Invalid length parameters. Ensure that minLength >= prefix.length() and maxLength >= minLength.");
}
Random random = new Random();
int length = random.nextInt(maxLength - minLength + 1) + minLength;
int randomPartLength = length - prefix.length();
StringBuilder randomString = new StringBuilder(prefix);
for (int i = 0; i < randomPartLength; i++) {
int index = random.nextInt(CHARACTERS.length());
randomString.append(CHARACTERS.charAt(index));
}
return randomString.toString();
}
/**
* 生成随机邮箱
*
* @return 生成的随机邮箱
*/
public static String generateRandomEmail() {
Random random = new Random();
String username = generateRandomStringWithPrefix("", 5, 10); // 生成5到10个字符的用户名
String domain = EMAIL_DOMAINS[random.nextInt(EMAIL_DOMAINS.length)];
return username + "@" + domain;
}
/**
* 生成随机手机号
*
* @return 生成的随机手机号
*/
public static String generateRandomPhoneNumber() {
Random random = new Random();
String prefix = PHONE_PREFIXES[random.nextInt(PHONE_PREFIXES.length)];
StringBuilder phoneNumber = new StringBuilder(prefix);
for (int i = 0; i < 8; i++) { // 生成8位数字
phoneNumber.append(random.nextInt(10));
}
return phoneNumber.toString();
}
public static void main(String[] args) {
// 示例用法
System.out.println("Random Int: " + randomInt(1, 100));
System.out.println("Random Long: " + randomLong(1L, 1000000L));
System.out.println("Random Double: " + randomDouble(1.0, 100.0));
System.out.println("Random Boolean: " + randomBoolean());
System.out.println("Random String: " + randomString(10));
System.out.println("Random Alphabetic String: " + randomAlphabeticString(10));
System.out.println("Random Numeric String: " + randomNumericString(10));
System.out.println("Random UUID: " + randomUUID());
System.out.println("Random Date: " + randomDate(System.currentTimeMillis() - 365 * 24 * 60 * 60 * 1000, System.currentTimeMillis()));
}
}