Tôi đang cố gắng viết một thuật toán có thể chọn N mục riêng biệt từ một chuỗi ngẫu nhiên mà không biết kích thước của chuỗi trước. trình tự nhiều lần. Ví dụ, các phần tử của chuỗi có thể là các dòng của một tệp lớn.Chọn N mục ngẫu nhiên từ chuỗi có độ dài không xác định
Tôi đã tìm thấy một giải pháp khi N = 1 (có nghĩa là, khi cố gắng chọn đúng một phần tử một cách ngẫu nhiên từ một chuỗi rất lớn):
import random
items = range(1, 10) # Imagine this is a huge sequence of unknown length
count = 1
selected = None
for item in items:
if random.random() * count < 1:
selected = item
count += 1
Nhưng làm thế nào tôi có thể đạt được điều tương tự cho các giá trị khác của N (N = 3)?
Không phải là câu trả lời cho câu hỏi hỏi, nhưng lưu ý rằng đối tích hợp trong bộ sưu tập (và nhiều người khác), bạn chỉ có thể làm [ 'random.sample (your_collection, N)' ] (https://docs.python.org/2/library/random.html#random.sample). –