解決問題:
Java生成指定時間范圍的隨機時間?
Java生成隨機中文姓名?
Java生成隨機字符姓名?
Java生成隨機數?
代碼:
import java.io.UnsupportedEncodingException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import java.util.UUID; public class GenerateData { /** * 自動生成中文名字 * @param len 名字的長度 * @return */ public static String getRandomJianTiZH(int len) { String ret = ""; for (int i = 0; i < len; i++) { String str = null; int hightPos, lowPos; // 定義高低位 Random random = new Random(); hightPos = (176 + Math.abs(random.nextInt(39))); // 獲取高位值 lowPos = (161 + Math.abs(random.nextInt(93))); // 獲取低位值 byte[] b = new byte[2]; b[0] = (new Integer(hightPos).byteValue()); b[1] = (new Integer(lowPos).byteValue()); try { str = new String(b, "GBK"); // 轉成中文 } catch (UnsupportedEncodingException ex) { ex.printStackTrace(); } ret += str; } return ret; } /** * 生成隨機用戶名,數字和字母組成 * @param length 名字長度 * @return */ public static String getStringRandom(int length) { String val = ""; Random random = new Random(); //參數length,表示生成幾位隨機數 for(int i = 0; i < length; i++) { String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; //輸出字母還是數字 if( "char".equalsIgnoreCase(charOrNum) ) { //輸出是大寫字母還是小寫字母 int temp = random.nextInt(2) % 2 == 0 ? 65 : 97; val += (char)(random.nextInt(26) + temp); } else if( "num".equalsIgnoreCase(charOrNum) ) { val += String.valueOf(random.nextInt(10)); } } return val; } /** * 生成指定范圍里面的隨機數 * @param begin * @param end * @return */ public static long randomNumber(long begin, long end){ long rtn = begin + (long)(Math.random()*(end - begin)); return rtn; } /** * 生成隨機UUID * @return */ public static String randomUUID(){ return UUID.randomUUID().toString().replace("-","").toUpperCase(); } public static Date randomDate(String beginDate,String endDate) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { Date start = format.parse(beginDate); Date end = format.parse(endDate); if (start.getTime() >= end.getTime()){ return null; } long date = random(start.getTime(), end.getTime()); return new Date(date); } catch (ParseException e) { e.printStackTrace(); return null; } } // 生成 begin 到 end 之間的隨機數 private static long random(long begin, long end){ long rtn = begin + (long)(Math.random()*(end - begin)); if (rtn == begin || rtn == end){ return random(begin, end); } return rtn; } }
