Ich versuche, einen Algorithmus zu schreiben, der N verschiedene Elemente aus einer Sequenz zufällig auswählen, ohne die Größe der Sequenz im Voraus zu kennen, und wenn es teuer ist, die Sequenz mehr als einmal zu iterieren . Die Elemente der Sequenz könnten zum Beispiel die Zeilen einer großen Datei sein.
Ich habe eine Lösung gefunden, wenn N=1 ist (d.h. "wähle genau ein Element zufällig aus einer großen Folge aus"):
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
Aber wie kann ich das Gleiche für andere Werte von N (z. B. N=3) erreichen?