Không, thuật toán của bạn không thể mở rộng. Những gì tôi đã làm trước đây là đưa ra các số nối tiếp (+1 mỗi lần) và sau đó chuyển chúng qua một phép toán XOR để xáo trộn các bit, do đó cho tôi một số dường như ngẫu nhiên. Tất nhiên chúng không thực sự ngẫu nhiên, nhưng chúng trông rất phù hợp với mắt người dùng.
[Chỉnh sửa] Thông tin bổ sung
Logic của thuật toán này diễn ra như thế này, bạn sử dụng một chuỗi đã biết để tạo ra các số duy nhất và sau đó bạn thao tác một cách xác định chúng, vì vậy chúng trông không nối tiếp nữa. Giải pháp chung là sử dụng một số hình thức mã hóa, trong trường hợp của tôi là một flipflop XOR, vì tốc độ nhanh nhất có thể và nó đáp ứng đảm bảo rằng các con số sẽ không bao giờ đụng nhau.
Tuy nhiên, bạn có thể sử dụng các hình thức mã hóa khác, nếu bạn muốn những con số trông giống nhau hơn, với tốc độ nhanh hơn (giả sử bạn không cần tạo nhiều giá trị cùng một lúc). Bây giờ, điểm quan trọng trong việc lựa chọn một thuật toán mã hóa là "đảm bảo rằng các con số sẽ không bao giờ đụng nhau". Và một cách để chứng minh liệu thuật toán mã hóa có thể đáp ứng đảm bảo này hay không là kiểm tra xem cả số gốc và kết quả mã hóa có cùng số bit hay không và thuật toán có thể đảo ngược (bijection).
[Cảm ơn Adam Liss & CesarB để đề cao giải pháp]