Cho một file chứa rất lớn số lượng số tự nhiên (số lượng N bạn không biết trước).
Làm thế nào để thiết kế 1 thuật toán đọc qua file 1 lần duy nhất theo từng dòng một (sequential read) và chọn ngẫu nhiên 1 số trong đó sao cho xác suất mỗi phần tử được chọn là bằng nhau (bằng 1/N).
Mấy tuần trước e có đi ngày hội doanh nghiệp trong trường thì được hỏi 1 câu nv, e chỉ nghĩ được là bỏ vào std::set xong chọn ra ngẫu nhiên 1 phần tử thì xác suất sẽ bằng nhau, nhưng nv thì vẫn chưa thỏa điều kiện =1/N)