首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

蓄水池样片算法

2012-12-20 
蓄水池抽样算法题目:要求从N个元素中随机的抽取k个元素,其中N无法确定?解法:首先选择N中的前k个数加入“蓄

蓄水池抽样算法

题目:要求从N个元素中随机的抽取k个元素,其中N无法确定

?

解法:首先选择N中的前k个数加入“蓄水池”中,然后从第k+1个数开始,以k/k+i(i=1,2,3...)的概率选择这个数,然后在蓄水池中随机选择一个数,并将其替换,N个元素遍历完毕后,蓄水池中的k个数就是随机选择的。

?

证明:这里即需要证明每个数出现在蓄水池中的概率都是相等的,拟采用数学归纳法

????????? 1.当i=1时,蓄水池中某个数出现的概率

???????????? 第k+1个数被取出的概率是k/k+1, 这时,蓄水池中每个数出现的概率都是1,同时,一个数被选择到的概率是1/k, 因此,一个数出现在池中的概率是1-(k/k+1)*(1/k)=k/k+1

????????? 2.假设第i个数被取出的概率是k/k+i,证明在有k+i+1的样本中,一个数出现在池子里的概率是k/k+i+1

???????????? 第k+i+1个数被取出的概率是k/k+i+1,? 池子中每个数的出现概率都是k/k+i, 池中的数被选择到的概率是1/k, 一个数在池中的概率就是 他出现在池中的概率*他没有被替换的概率,就是(k/k+i)*(1-1/k*k/k+i+1),也就是k/k+i+1

??????

1 楼 javaboy8282 2012-09-20   楼主可否贴出代码  代码更直观一点

热点排行