У меня возникли проблемы с пониманием вероятностей, связанных с выборкой коллектора. Ниже приведен пример кода, который я видел используемый практически везде: (?)проблема отбора проб коллектора
1/*
2 S has items to sample, R will contain the result, K number of items to select
3*/
4ReservoirSample(S[1..n], R[1..k])
5 // fill the reservoir array
6 for i = 1 to k
7 R[i] := S[i]
8
9 // replace elements with gradually decreasing probability
10 for i = k+1 to n
11 j := random(1, i) // important: inclusive range
12 if j <= k
13 R[j] := S[i]
Является ли мое понимание прав: Пусть мы имеем к = 3 и вход = [100, 200, 300, 400, 500] и i в настоящее время составляет 500 индексов. Вероятность 500 заменяет 300 в резервуаре (который имеет 3 размера) = вероятность выбора 300 в резервуаре * вероятность выбора 500, которая возможна только в том случае, если индекс, возвращаемый случайной функцией, меньше или равен 3 из 5 вариантов = 1/3 * 3/5 = 1/5
https://en.wikipedia.org/wiki/Reservoir_sampling –
@KarolyHorvath: нормально? Я прошел через эту ссылку, и этот код оттуда, но я просто хотел проверить свое понимание этого материала. –