This MSDN article доказывает правильность Reservoir Sampling algorithm следующим образом:резервуара проблема отбора проб
Базовый случай тривиален. Для случая k + 1 вероятность a задана элемент i с положением < = k находится в R is s/k.
. Вероятность i заменяется на вероятность выбора k + 1-го элемента, умноженного на i, который выбирается для замены: s/(k + 1) * 1/s = 1/(k + 1) , и вероятность того, что i не заменена, равна k/k + 1.
Таким образом, любая вероятность существования данного элемента после k + 1 раундов: (выбрана в k шагах и не удалена по k шагам) = s/k * k/(k + 1), которая равна s/(к + 1).
Итак, когда k + 1 = n, любой элемент присутствует с вероятностью s/n.
о шаге 3:
Каковы
k+1 rounds
упоминается?Что такое
chosen in k steps, and not removed in k steps
?Почему мы вычисляем эту вероятность только для элементов, которые уже были в
R
после первых шаговs
?
[Этот ответ] (http://stackoverflow.com/a/21201378/752843) может вас заинтересовать. – Richard