Tôi hiểu nguyên tắc cơ bản của bộ lọc hạt và đã cố gắng thực hiện. Tuy nhiên, tôi đã gác máy ở phần lấy mẫu lại.
Về mặt lý thuyết, nó khá đơn giản: Từ tập hợp các hạt cũ (và có trọng số), vẽ một tập hợp hạt mới với sự thay thế. Trong khi làm như vậy, ủng hộ những hạt có trọng lượng cao. Các hạt có trọng lượng cao được rút ra thường xuyên hơn và các hạt có trọng lượng thấp ít thường xuyên hơn. Có lẽ chỉ một lần hoặc không một chút nào. Sau khi lấy mẫu lại, tất cả các trọng số được gán cùng trọng lượng.
Ý tưởng đầu tiên của tôi về cách thực hiện điều này về cơ bản là thế này:
- Bình thường hóa trọng lượng
- Nhân mỗi trọng lượng với tổng số hạt
- Làm tròn các trọng số tỷ lệ này thành số nguyên gần nhất (ví dụ:
int()
trong Python)
Bây giờ tôi nên biết tần suất vẽ từng hạt, nhưng do lỗi vòng, cuối cùng tôi có ít hạt hơn trước bước lấy mẫu lại.
Câu hỏi: Làm thế nào để tôi "lấp đầy" các hạt còn thiếu để có cùng số lượng hạt như trước bước lấy mẫu lại? Hoặc, trong trường hợp tôi hoàn toàn không theo dõi được ở đây, làm thế nào để tôi lấy mẫu lại một cách chính xác?