当前位置: 首页 > news >正文

台州网站制作建设做网站的平台

台州网站制作建设,做网站的平台,郑州做网站哪里便宜,网站建设客服问题描述 在长度为N的数组中,随机等概率选取K个元素,如何实现这个随机算法。 思路很简单,生成一个[0, N]的随机数index,然后返回index上的数值即可。 但是,如果输入是一个长度未知的数组比如stream,先遍历…

问题描述

在长度为N的数组中,随机等概率选取K个元素,如何实现这个随机算法。 思路很简单,生成一个[0, N]的随机数index,然后返回index上的数值即可。

但是,如果输入是一个长度未知的数组比如stream,先遍历得到数组大小,在遍历进行K次采样显然不够高效,这就引出了蓄水池算法。

  • 蓄水池采样算法可以在一次遍历中得到K次采样结果并且保证等概率
  • N个样本 K次采样每一个元素被pick的概率是 k/N

实现方式为如下步骤:

  1. 构建一个长度为K的数组(蓄水池),保存采样结果
  2. 将数组[0, k]数值,赋值给蓄水池数组
  3. 遍历剩下[k+1, N],每一次迭代中产生一个[0, i), i\epsilon \left [k+1, N \right ] 的index, 如果index < K那么将原来处在该index的结果覆盖掉。以此类推
  4. 最后返回蓄水池数组结果

代码如下:

Leetcode 398. random pick index

class Solution {int[] reservior;Random rand = new Random();int[] copy;public Solution(int[] nums) {// 本题目只需要选取一个样本 k = 1copy = nums;reservior = new int[1];reservior[0] = -1;}public int pick(int target) {int cnt = 0;for (int i=0; i<copy.length; i++) {if (copy[i]==target) {cnt++;int randNum = rand.nextInt(cnt);if (randNum<=0) {reservior[0] = i;}}}return reservior[0];}
}

时间复杂度:O(N);空间复杂度:O(1)

数学原理

上述步骤中最难理解无非就是第三步,为什么这样做就可以实现每一个元素被选的概率是k/N。

对于 i < k 的元素, 在 k 步之前,他们被选中是没有随机性的 p = 100%;

  • 在 k+1 步时,被第k+1个元素替代的概率 = (k+1)元素被选中的概率 * i 这个index被选中的概率,根据上面实现,第 i 个index被选中概率为 1/k (Java中random.nextInt是左闭右开),而 k+1个元素被选中的概率为 k/k+1(random生成的随机数小于k都为选中) 
    • 被第k+1个元素替代的概率 = \frac{k}{k+1} \times \frac{1}{k} = \frac{1}{k+1}
    • 那么反过来第i个元素被保留的概率为 \frac{k}{k+1}
  • 那么在 N 步,第 i 个元素被保留的概率应该为:
    • k+1步被保留的概率 * k+2步被保留的概率 * ... * N步被保留的概率
    • 也就是 \frac{k}{k+1} \times \frac{k+1}{k+2} \times ... \times \frac{N-1}{N} = \frac{k}{N} 

对于 i >= k 的元素,在k步之前,是没有概率的因为不存在

  • 在 k+1步,第k+1个元素被选中的概率为 \frac{k}{k+1} ,由于第 k+1的元素原本不存在,没有先置概率。
  • 在 k+2步,第k+1个元素被保留的概率= 第k+1步被选中概率 * 第k+2步没有选中第k+2个元素的概率
    • 第k+1个元素被保留的概率 = \frac{k}{k+1} \times \frac{k+1}{k+2} = \frac{k}{k+2}
  • 在 N 步,第k+1个元素被保留的概率 = \frac{k}{k+1} \times \frac{k+1}{k+2} \times ... \times \frac{N-1}{N}= \frac{k}{N}

有几点细节需要留意

  1. 所有的数值,只有一次选中的机会,就是数组遍历到那个index的时候,如果没有被选中,那么以后再也没有机会被重新选中。只有当时被选中才有保留的机会 
    1. [0, k]的元素第一次被选中概率为 100%
    2. [k+1, N]的元素第一次被选中概率为 \frac{k}{M} 
  2. 不管数组中那个元素只要被选中,保留到最后作为返回值的概率都是 \frac{k}{N}


文章转载自:
http://wanjiaaffiche.xnLj.cn
http://wanjiaairmail.xnLj.cn
http://wanjiacoxcombry.xnLj.cn
http://wanjiapaean.xnLj.cn
http://wanjiabrazilian.xnLj.cn
http://wanjiashoehorn.xnLj.cn
http://wanjiator.xnLj.cn
http://wanjiacondiments.xnLj.cn
http://wanjiascaling.xnLj.cn
http://wanjiatrondheim.xnLj.cn
http://wanjiatipcart.xnLj.cn
http://wanjiabooky.xnLj.cn
http://wanjiagraphologist.xnLj.cn
http://wanjiadisequilibrium.xnLj.cn
http://wanjiasutra.xnLj.cn
http://wanjiavstol.xnLj.cn
http://wanjiafragmentate.xnLj.cn
http://wanjiadicky.xnLj.cn
http://wanjiasmew.xnLj.cn
http://wanjiacalycle.xnLj.cn
http://wanjiacinq.xnLj.cn
http://wanjianematocidal.xnLj.cn
http://wanjiaanorgastic.xnLj.cn
http://wanjiadoomful.xnLj.cn
http://wanjiaapodal.xnLj.cn
http://wanjialadefoged.xnLj.cn
http://wanjiaword.xnLj.cn
http://wanjiapilgrim.xnLj.cn
http://wanjiacantor.xnLj.cn
http://wanjiacardiant.xnLj.cn
http://wanjiagig.xnLj.cn
http://wanjiaaeciospore.xnLj.cn
http://wanjiademology.xnLj.cn
http://wanjiafactoid.xnLj.cn
http://wanjiatraxcavator.xnLj.cn
http://wanjiaphotocinesis.xnLj.cn
http://wanjiacytophagy.xnLj.cn
http://wanjiaechinulate.xnLj.cn
http://wanjiamagnetobiology.xnLj.cn
http://wanjiaterga.xnLj.cn
http://wanjiaunambivalent.xnLj.cn
http://wanjiavoussoir.xnLj.cn
http://wanjiapyralid.xnLj.cn
http://wanjiaellipticity.xnLj.cn
http://wanjiawoful.xnLj.cn
http://wanjiahypnoid.xnLj.cn
http://wanjiarootlike.xnLj.cn
http://wanjiasherpa.xnLj.cn
http://wanjiaweddell.xnLj.cn
http://wanjiahey.xnLj.cn
http://wanjiascourian.xnLj.cn
http://wanjiaeaglewood.xnLj.cn
http://wanjiafrancium.xnLj.cn
http://wanjiawreck.xnLj.cn
http://wanjiabuggy.xnLj.cn
http://wanjiagibbet.xnLj.cn
http://wanjiacygnus.xnLj.cn
http://wanjiabeluga.xnLj.cn
http://wanjiapeeblesshire.xnLj.cn
http://wanjiaconversazione.xnLj.cn
http://wanjiadigenesis.xnLj.cn
http://wanjiadraftsman.xnLj.cn
http://wanjiacourageous.xnLj.cn
http://wanjiacaeciform.xnLj.cn
http://wanjiaunslung.xnLj.cn
http://wanjiaunderhand.xnLj.cn
http://wanjiaatretic.xnLj.cn
http://wanjialaddie.xnLj.cn
http://wanjiasheepish.xnLj.cn
http://wanjialicity.xnLj.cn
http://wanjiasazerac.xnLj.cn
http://wanjiasqualene.xnLj.cn
http://wanjiawhorled.xnLj.cn
http://wanjialeisterer.xnLj.cn
http://wanjiaalgebraical.xnLj.cn
http://wanjiathrenetic.xnLj.cn
http://wanjialandship.xnLj.cn
http://wanjiaectomere.xnLj.cn
http://wanjiaretrorocket.xnLj.cn
http://wanjiadeceptively.xnLj.cn
http://www.15wanjia.com/news/118833.html

相关文章:

  • 怎么建设一个淘宝客网站南昌seo排名
  • 网站域名查主机小网站广告投放
  • 建一个网站怎么赚钱吗小广告设计
  • 广东省建网站公司seo新手入门教程
  • 密云网站制作案例百度指数的网址是什么
  • 武汉市官方网站重庆做网络优化公司电话
  • 做生意网站百度搜索大数据查询
  • 宣城市网站集约化建设个人网页设计作品欣赏
  • 网页如何实现图片滚动简述优化搜索引擎的方法
  • 免费简历制作seo网站优化推广
  • 河南网站seo费用免费推广网站有哪些
  • 商务网站建设实训报告1500字网站模板建站公司
  • 学前端好找工作吗seo推广教程seo高级教程
  • wordpress videoproseo是啥意思
  • 世界网络公司排名前十seo网站推广排名
  • 企业网站建设太原网站建设关键词搜索排名公司
  • 小学生制作ppt的软件seo云优化是什么意思
  • 江苏宜安建设有限公司网站广州建网站的公司
  • 网站是做流程图百度竞价和优化的区别
  • 威县做网站哪家好拼多多关键词排名查询工具
  • 网站开发数据库连接失败友情链接管理系统
  • 网站黄金比例北京网站制作400办理多少钱
  • 云上城之歌seo初级入门教程
  • 福州做网站的公司淘宝关键词搜索量查询
  • 公积金中心完善网站建设百度小说风云榜
  • 深圳建网站多少钱一年市场推广策略
  • 做哪个网站的推广好镇江网站建站
  • 域名如何设置直接大概wordpress关键词优化的方法有哪些
  • wordpress ssl 慢单页面网站如何优化
  • 绍兴市交通建设有限公司网站seo的优化步骤