Đây có thể là câu hỏi phỏng vấn. Lấy mẫu lấy mẫu được sử dụng bởi nhà khoa học dữ liệu để lưu trữ dữ liệu có liên quan trong bộ nhớ hạn chế từ luồng dữ liệu lớn.
Nếu bạn có để thu thập các yếu tố k từ bất kỳ mảng với n phần tử, như vậy mà bạn khả năng của mỗi yếu tố thu thập nên cùng (k/n), bạn thực hiện theo hai bước,
1) Lưu trữ các yếu tố k đầu tiên trong bộ nhớ. 2) Khi phần tử tiếp theo (k + 1) xuất phát từ luồng rõ ràng là bạn không còn chỗ trống trong bộ sưu tập của mình nữa. Tạo một số ngẫu nhiên từ o đến n, nếu số ngẫu nhiên được tạo nhỏ hơn k giả sử l, thay thế dung lượng lưu trữ [ l] với phần tử (k + 1) từ luồng.
Bây giờ, quay trở lại câu hỏi của bạn, kích thước lưu trữ ở đây là 1.So bạn sẽ chọn nút đầu tiên, lặp qua danh sách cho phần tử thứ hai.Bây giờ tạo số ngẫu nhiên, nếu 1 phần tử lưu trữ từ danh sách
@Giacomon Có một lý do bạn cảm thấy điều này sẽ không làm việc cho các bộ sưu tập nhỏ. Tôi hiểu câu hỏi để cung cấp một thuật toán lấy mẫu thống nhất trực tuyến, điều này phù hợp với tôi chỉ cần nghĩ rằng –
@Aurojit: Tôi nghĩ Giacomo chỉ nói rằng giải pháp này là tốt cho cả bộ sưu tập lớn và nhỏ. –
@ Chris: không không tôi đã sai – gd1