蓄水池抽样算法

题目 :在一个源源不断的数据流中,会吐出带有编号的球,现在问你 在不知道具体有多少个球的情况下,如何等概率的抽出10个球?

例题:leetcode 382题

应用场景:比如在某个游戏的抽奖活动中,游戏官方并不知道有多少用户会参与抽奖活动,而抽奖活动又在晚上12点结束时,并同时发布所有的中奖用户(也就是没时间去一个个计算用户数量并抽奖),请设计一个合理的算法实现这个场景。

算法实现:假设要等概率抽10个球,那么 1~10号球,百分之百能被选中,假设现在 来到了 第 i号球(i>10),那么第i号球被选中的概率就是 10 / i,而对于 已经被选择的10个球中,每一个球都有1 / 10的概率被 第i号球替换掉,所以已经被选中的10个球,在第i号球到来的时候,都有 1 / i 的概率被替换掉,那么也就是有 10 / i 的概率存活下来。如下图:

相关推荐
零小陈上(shouhou6668889)2 分钟前
K-近邻算法 - lazy learning的代表
算法·近邻算法
有一个好名字8 分钟前
力扣-从字符串中移除星号
java·算法·leetcode
萧瑟其中~12 分钟前
二分算法模版——基础二分查找,左边界查找与右边界查找(Leetcode的二分查找、在排序数组中查找元素的第一个位置和最后一个位置)
数据结构·算法·leetcode
码上就好ovo13 分钟前
Atcoder Beginnner Contest 440
算法
高洁0121 分钟前
CLIP 的双编码器架构是如何优化图文关联的?(3)
深度学习·算法·机器学习·transformer·知识图谱
jllllyuz26 分钟前
MATLAB实现蜻蜓优化算法
开发语言·算法·matlab
iAkuya28 分钟前
(leetcode)力扣100 36二叉树的中序遍历(迭代递归)
算法·leetcode·职场和发展
wangwangmoon_light36 分钟前
1.1 LeetCode总结(线性表)_枚举技巧
算法·leetcode·哈希算法
mit6.8241 小时前
几何|阻碍链
算法