Para concretar, ¿cómo leerías la línea de texto, y seleccionarías e imprimirías una línea al azar, cuando no sabes el número de líneas por adelantado?¿Cómo seleccionar uno de n objetos al azar sin saber n al principio?
Sí, este es un problema de la perla de programación que me confunde.
La solución elige el primer elemento, luego selecciona el segundo con probabilidad 1/2, el tercero con 1/3, y así sucesivamente.
Un algoritmo:
i = 0
while more input lines
with probability 1.0/++i
choice = this input line
print choice
Supongamos que la elección final es el tercero elemento, la probabilidad es 1 x 1/2 x 1/3 x 3/4 x ... x n-2/n-1 x n-1/n == 1/2n? Pero 1/n debería ser correcto.
La probabilidad de que se elija el elemento 3 no depende en absoluto de lo que se eligió en el paso 1 o 2. Por lo tanto, aquí no incluye los términos 1 o 1/2. Entonces es 1/n. –
Gracias. Tiene sentido ahora. – deepsky
buena pregunta, nunca pensé en eso! – unkulunkulu