Tôi đang lập trình LFSR (Đăng ký thay đổi phản hồi tuyến tính) trong phần mềm cho mục đích học tập và đã gặp một số hạn chế trong việc sử dụng làm trình tạo số giả ngẫu nhiên (PRNG).
- Nếu hạt giống có vài bit '1' và một vài lần sử dụng, nó đòi hỏi một "thời gian khởi động" lớn để tạo ra đầu ra rõ ràng ngẫu nhiên, với sự phân phối gần như bằng nhau giữa các lần chạy '1' và '0' hoặc ngắn '0'. Tôi đoán với nhiều thao tác khởi động như vậy sẽ nhanh hơn rất nhiều, nhưng tất cả các bảng được tính toán trước tôi tìm thấy đều cho hai hoặc bốn lần nhấn.
- Các số liên tiếp có mối tương quan cao, điều này được dự kiến, với điều kiện là nếu bit đầu ra bằng 0 thì số tiếp theo sẽ bằng một nửa so với trước đó. Đối với LFSR 15 bit có vòi [15, 14], việc vẽ một cặp số liên tiếp làm điểm trong một mặt phẳng cho các điểm sau. Một PRNG lý tưởng nên lan rộng những điểm này khắp nơi.
Tôi biết rằng LFSR được sử dụng làm bộ đếm phần cứng nhanh, nhưng tôi cũng đã thấy nó được sử dụng làm PRNG để tạo ra tiếng ồn trắng. Làm thế nào nó được sử dụng trong các ứng dụng thế giới thực với chất lượng kém như vậy?