zoukankan      html  css  js  c++  java
  • 蓄水池抽样

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

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

    证明:这里即需要证明任意一个数出现在蓄水池中的概率都是k/(k+i),假设现在有k+i个元素

    任意一个数出现在蓄水池中的概率P=P(原来在,并且也没有被替换掉)+P(原来不在,刚刚被选进蓄水池)

    第一项P(原来在,并且也没有被替换掉)=P(原来在)*P(没有被替换)=k/(k+i)   *   (1-P(被替换)) = k/(k+i)  * (1-(k/k+i) *(1/k)) = (k*k)/(k+i)*(k+i)

    第二项P(原来不在,刚刚被选进蓄水池)=P(原来不在)*P(刚刚被选进蓄水池)=i/(k+i)  *  k/(k+i) = (i*k)/(k+i)(k+i)

    所以总的概率P=k/(k+i)

  • 相关阅读:
    session的一个问题
    (Struts)ActionForm类及表单数据验证
    javaee添加验证码
    struts的上传和下载
    logic标签用法
    jstl标签用法
    bean标签
    /WEB-INF/userManage.jsp(31,82) Unterminated ${ tag
    自定义EL
    jstl
  • 原文地址:https://www.cnblogs.com/flywithyou/p/3170996.html
Copyright © 2011-2022 走看看