Toggle Theme Editor
Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Charcoal

[TIP]Kỹ thuật random, tạo danh sách (mảng) ngẫu nhiên trong java

Discussion in 'Hướng dẫn người mới bắt đầu' started by JackV, 22/10/11.

  1. phamchuc81

    phamchuc81 New Member

    nản vãi
     
  2. JackV

    JackV Administrator Staff Member

    Thì random trong khoảng (b-a) ra số rồi cộng với a là được.
     
  3. badboy3283

    badboy3283 Active Member

    Random password: số, hoa, thường

    Code:
    public static final int MAXDIGIT = 9;
    public static final int NUMBEROFASCII = 25;
    public static final int UPPPERSTART = 65;
    public static final int LOWERSTART = 97;
    
    public static String generateRandomPassword(int lenght) {
            Random r = new Random();
            boolean number = false;
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < lenght; i++) {
                number = r.nextBoolean();
                if (number) {
                    sb.append(r.nextInt(MAXDIGIT));
                } else {
                    boolean isupper = r.nextBoolean();
                    int num = 0;
                    if (isupper) {
                        num = r.nextInt(NUMBEROFASCII) + UPPPERSTART;
                    } else {
                        num = r.nextInt(NUMBEROFASCII) + LOWERSTART;
                    }
                    sb.append((char) num);
                }
            }
            return sb.toString();
        }
     
    dangxunb likes this.
  4. gulang

    gulang New Member

    tham khảo ở trên mình có 1 đoạn này random không lặp lại và trả về 1 mảng các số.
    Code:
    package layRandom1Mang;
    
    import java.util.ArrayList;
    
    /**
     *
     * @author joo
     */
    public class layRandom1Mang {
        //lấy soGiaTriCanLay giá trị từ dãy số từ giaTriBatDau đến giaTriKetThuc mà không bị trùng.
        public static ArrayList<Integer> layNgauNhien(int soGiaTriCanLay, int giaTriBatDau, int giaTriKetThuc){
             ArrayList<Integer> tmp = new ArrayList<>();
             ArrayList<Integer> finish = new ArrayList<>();
             int size = giaTriKetThuc - giaTriBatDau +1;
             for(int i = 0; i<size; i++){
                 tmp.add(giaTriBatDau+i);
             }
             java.util.Collections.shuffle(tmp);
             if(soGiaTriCanLay> size){
                 soGiaTriCanLay = size;
             }
             for(int i=0; i<soGiaTriCanLay;i++){
                 finish.add(tmp.get(i));
             }
             return finish;
         }
        
        public static void main(String[] args) {
            ArrayList<Integer> test = new ArrayList<>();
            test=layNgauNhien(10,0,100);
            for(int i=0;i<10;i++){
                System.out.println(test.get(i));
            }
        }
    }
     
  5. gulang

    gulang New Member

    cái này có thể lấy mảng các số rồi truy cập vào 1 arraylist đối tượng để lấy random đối tượng.
     
  6. JackV

    JackV Administrator Staff Member

    Cho cái demo đi bạn 8-|
     
  7. Joe

    Joe Thành viên VIP

    The shortest distance between 2 points is a straight line. If you carefully read method shuffle() of the API java.util.collections you would see that ONE arraylist is sufficient enough to do the task. Your codes can be optimally rewritten as following
    PHP:
    import java.util.ArrayList;

    /**
     *
     * @author joo
     */
    public class layRandom1Mang {
        
    //lấy soGiaTriCanLay giá trị từ dãy số từ giaTriBatDau đến giaTriKetThuc mà không bị trùng.
        
    public static ArrayList<IntegerlayNgauNhien(int soGiaTriCanLayint giaTriBatDauint giaTriKetThuc){
             
    ArrayList<Integertmp = new ArrayList<>();       
             
    //ArrayList<Integer> finish = new ArrayList<>();
             
    int size giaTriKetThuc giaTriBatDau +1;
             for(
    int i 0i<sizei++){
                 
    tmp.add(giaTriBatDau+i);
             }
             
    java.util.Collections.shuffle(tmp);
             
    /*
             if(soGiaTriCanLay> size){
                 soGiaTriCanLay = size;
             }
             for(int i=0; i<soGiaTriCanLay;i++){
                 finish.add(tmp.get(i));
             }
             return finish;
             */
             
    return tmp;
         }
       
        public static 
    void main(String[] args) {
            
    ArrayList<Integertest = new ArrayList<>();
            
    test=layNgauNhien(10,0,100);
            for(
    int i=0;i<10;i++){
                
    System.out.println(test.get(i));
            }
        }
    }
     
  8. TrungHiếuVNTN

    TrungHiếuVNTN New Member

    Cái này Random rd = new Random() gọi là j vậy ạ?, rồi biết mấy từ này ở đâu?
    *Hướng dẫn làm ứng dụng tạo UUID đi mọi , cảm ơn
     
  9. hoithegiantinhlagi

    hoithegiantinhlagi Active Member

    Nếu hỏi câu này là bạn chưa biết bất cứ điều gì về programming, bạn nên đọc mấy cuốn sách lập trình căn bản đi.
     
    D.A.N_3002 likes this.

Chia sẻ trang này

Loading...