【发布时间】:2016-08-03 10:40:13
【问题描述】:
我的问题与此链接https://en.m.wikipedia.org/wiki/Reservoir_sampling“算法 R”部分中的示例代码有关
我从该部分复制了下面的代码 sn-p。为什么这段代码用逐渐降低的概率替换元素?根据问题,输入中的每个项目都应该具有相同的概率,对吧?
for i = k+1 to n
j := random(1, i)
if j <= k
R[j] := S[i]
例如,将以下三个输入的随机函数调用与我的水库大小 10 进行比较
- 随机 (1,15) 获得低于 10 的随机数的机会很高
- 随机 (1, 100) 获得低于 10 的随机数的机会非常低
- 随机 (1, 1000) 获得低于 10 的随机数的机会非常低
因此,随着输入的增长,替换项目的机会非常少,那么我们怎么能说水库采样算法是在每个项目上选择具有相等概率的随机样本的解决方案呢?可能我遗漏了一些东西,请解释一下。
【问题讨论】:
标签: algorithm random data-science sampling reservoir-sampling