Java 生成指定時間范圍的隨機時間、隨機中文姓名、隨機字符姓名、隨機數


解決問題:

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;
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM