Per la concretezza, come leggeresti la linea di testo e selezionerai e stamperai una riga a caso, quando non conosci il numero di linee in anticipo?Come selezionare uno dei n oggetti a caso senza conoscere n all'inizio?
Sì, questo è un problema di programmazione perla che mi confonde.
La soluzione sceglie il primo elemento, quindi seleziona il secondo con probabilità 1/2, il terzo con 1/3 e così via.
Un algoritmo:
i = 0
while more input lines
with probability 1.0/++i
choice = this input line
print choice
Supponiamo che la scelta finale è il 3 ° elemento, la probabilità è 1 x 1/2 x 1/3 x 3/4 x ... x n-2/n-1 x n-1/n == 1/2n? Ma 1/n dovrebbe essere corretto.
La probabilità che l'elemento 3 sia scelto non dipende affatto da ciò che è stato scelto nel passaggio 1 o 2. Pertanto, non si includono i termini 1 o 1/2 qui. Quindi è 1/n. –
Grazie. Ha senso ora. – deepsky
domanda interessante, non ci hai mai pensato! – unkulunkulu