Для конкретности, как бы вы прочитали текстовую строку, а также выбрали и напечатали одну случайную строку, если вы не знаете заранее количество строк?
Да, это проблема из жемчужины программирования,Я запутался.
Решение выбрать 1-й элемент, затем выбрать второй с вероятностью 1/2, третий с 1/3 и т. Д.
Алгоритм:
i = 0
while more input lines
with probability 1.0/++i
choice = this input line
print choice
Предположим, что окончательным выбором является 3-й элемент, вероятность составляет 1 x 1/2 x 1/3 x 3/4 x ... x n-2 / n-1 xn-1 / n == 1 / 2n?Но 1 / n должно быть правильным.