Nguyên tắc gồm 5 công việc:
1. Lập 1 csdl, có thể chỉ là một bảng, chứa các số không thể chọn
2. Ghi các số không thể chọn (00000..., 111..., ...) vào bảng
3. Dùng một hàm lấy số ngẫu nhiên, ví dụ Rnd() * 10^13
4. Xét xem có trong bảng, nếu không có thì dùng, và ghi vào bảng
5. Nếu đã có trong bảng thì sử lý đụng hàng
Có 2 cách để sử lý đụng hàng: (1) chọn số khác, (2) dùng một con toán nhảy đến số khác
Tôi đã đề cập vụ này vài lần rồi. Chịu khó tìm.
Đó là nói trên quan điểm lập trình thôi. Trên thực tế, trong 13 con số thì chỉ có 12 con số đầu là thực số, số cuối là ký tự kiểm soát (check digit) dùng để xem sự hợp lệ của dãy số. Để lấy ngẫu nhiên, người ta chia 1 số ra làm 3 phần, mỗi phần 4 số.