Home Các giải thuật random cơ bản (TODO)
Post
Cancel

Các giải thuật random cơ bản (TODO)

Đặt vấn đề

Yêu cầu tạo ra 1 chuỗi ký tự theo nguyên tắc

5 ký tự đầu là ký tự alphabet [a-z|A-Z]
10 ký tự sau là chữ số [0-9]
Luôn phải đảm bảo tính duy nhất của chuỗi Không thể dự đoán giá trị một cách dễ dàng

Các giải pháp

Time based random

Random dựa trên giá trị của System.curentTimeMillis() cho chuỗi số stackoverflow/

Cách này cho phép tạo dữ liệu unique nhưng không đảm bảo tính bảo mật vì giá trị của key có thể dự đoán dễ dàng

1
2
3
4
5
6
7
8
9
10
11
  private static final long LIMIT = 10000000000L;
  private static long last = 0;

  public static long getID() {
    // 10 digits.
    long id = System.currentTimeMillis() % LIMIT;
    if ( id <= last ) {
      id = (last + 1) % LIMIT;
    }
    return last = id;
  }

Random theo giải thuật random của Java

This post is licensed under CC BY 4.0 by the author.