水塘抽样(解决k个数据均匀抽样问题)

面试题— —从很长的数据流等概率随机采样的两种实现方法 从很长的数据流等概率随机采样 “给出一个数据流,这个数据流的长度很大或者未知。并且对该数据流中数据只能访问一次。请写出一个随机选择算法,使得数据流中所有数据被选中的概率相等。” 在搜索引擎等相关领域也会被问到哦 假设数据流长度为n,那么我们希望数据流中的每个数据都是以 1/n 的概率返回。 相关题目: 382. 链表随机节点 398. 随机数索引 不合适的但容易想到的两种方法: 直观的做法是生成一个 1-n 的随机数 i,代表我们想取第 i 个数据。但是这个前提是我们知道了数据流的长度。通常来说,数据 阅读详情

水塘抽样

背景

给定一个数据流,但是数据流的长度N很大,且N直到处理完所有数据之前都不可知,如何在只遍历一遍数据(O(N))的情况下,能够随机选取出这组数据的k个概率相等的均匀抽样。(包含未知大小数据流中随机选取k个数据,使得每个数据抽取到的概率相等)

(1)仅扫描数据一次。

(2)空间复杂度为O(K)。空间复杂度与整个数据量无关,只与抽样大小有关。

(3)扫描到数据的前n 个数据时(n>k),保存当前已扫描数据的k个均匀抽样。

思路

将取出数据数量k当做一个水塘

(1)如果接受的数据量小于k,则依次放入采样数组中

(2)当接收到第i个数据,i大于等于k时,在[0,i]的范围内取一个随机数d 如果d落在了[0,k-1]的范围内,则取接收到的第i个数据替换采样数组中下标等于d位置上的值

  • 情况一: 初始化的时候,也就是水塘未满之前,每一个数被选中的概率都一样都是1
  • 情况二:水塘满了的时候

这时候

(1)当k+1元素未被选中的时候,数组中没有元素替换。所以k+1个元素被选中的概率为 k/k+1

(2)当k+1元素被选中的时候,数组中某个元素被k+1个元素替换掉了。那么第k+1个元素被选中的概率为 k / k + 1 k/k+1 k/k+1,这就是新元素出现在水塘中的概率。水库中任意一个元素被替换掉的概率是:(k/k+1)*(1/k)=1/(k+1),意即首先要第k+1个元素被选中,然后该元素在k个元素中被选中。那它未被替换的概率就是1-1/(k+1)=k/(k+1)。可以看出来,旧元素和新元素出现的概率是相等的。

k=1

首先考虑简单的情况,当k=1时,如何制定策略:

假设数据流含有N个数,我们知道如果要保证所有的数被抽到的概率相等,那么每个数抽到的概率应该为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nq0gHLrN-1650884011739)(https://www.zhihu.com/equation?tex=%5Cfrac%7B1%7D%7BN%7D)] 。

那我们可以这样做:

  • 遇到第1个数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V1PvVcTC-1650884011741)(https://www.zhihu.com/equation?tex=n_1)] 的时候,我们保留它, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V3dzQNBl-1650884011741)(https://www.zhihu.com/equation?tex=p%28n_1%29%3D1)]
  • 遇到第2个数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r1guQco1-1650884011742)(https://www.zhihu.com/equation?tex=n_2)] 的时候,我们以 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JiofxRR9-1650884011742)(https://www.zhihu.com/equation?tex=%5Cfrac%7B1%7D%7B2%7D)] 的概率保留它,那么 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CdxGm8f4-1650884011742)(https://www.zhihu.com/equation?tex=p%28n_1%29%3D1%5Ctimes+%5Cfrac%7B1%7D%7B2%7D%3D%5Cfrac%7B1%7D%7B2%7D)] ,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3FsovM7w-1650884011743)(https://www.zhihu.com/equation?tex=p%28n_2%29%3D%5Cfrac%7B1%7D%7B2%7D)]
  • 遇到第3个数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sLoKUVDI-1650884011743)(https://www.zhihu.com/equation?tex=n_3)] 的时候,我们以 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xztwuuHd-1650884011743)(https://www.zhihu.com/equation?tex=%5Cfrac%7B1%7D%7B3%7D)] 的概率保留它,那么 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-88vDNQMU-1650884011744)(https://www.zhihu.com/equation?tex=p%28n_1%29%3Dp%28n_2%29%3D%5Cfrac%7B1%7D%7B2%7D%5Ctimes%281-%5Cfrac%7B1%7D%7B3%7D%29%3D%5Cfrac%7B1%7D%7B3%7D)] , [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-di4Yq5pz-1650884011744)(https://www.zhihu.com/equation?tex=p%28n_3%29%3D%5Cfrac%7B1%7D%7B3%7D)]
  • ……
  • 遇到第i个数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7uXePSG0-1650884011745)(https://www.zhihu.com/equation?tex=n_i)] 的时候,我们以 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5YTToCRK-1650884011745)(https://www.zhihu.com/equation?tex=%5Cfrac%7B1%7D%7Bi%7D)] 的概率保留它,那么 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MbfOdDFV-1650884011745)(https://www.zhihu.com/equation?tex=p%28n_1%29%3Dp%28n_2%29%3Dp%28n_3%29%3D%5Cdots%3Dp%28n_%7Bi-1%7D%29%3D%5Cfrac%7B1%7D%7Bi-1%7D%5Ctimes%281-%5Cfrac%7B1%7D%7Bi%7D%29%3D%5Cfrac%7B1%7D%7Bi%7D)] , [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zvBHmOX8-1650884011746)(https://www.zhihu.com/equation?tex=p%28n_i%29%3D%5Cfrac%7B1%7D%7Bi%7D)]

这样就可以看出,对于k=1的情况,我们可以制定这样简单的抽样策略:

数据流中第i个数被保留的概率为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n6XovGX7-1650884011746)(https://www.zhihu.com/equation?tex=%5Cfrac%7B1%7D%7Bi%7D)] 。只要采取这种策略,只需要遍历一遍数据流就可以得到采样值,并且保证所有数被选取的概率均为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pl51IJdA-1650884011747)(https://www.zhihu.com/equation?tex=%5Cfrac%7B1%7D%7BN%7D)] 。

k>1

对于k>1的情况,我们可以采用类似的思考策略:

仍然假设数据流中含有N个数,那么要保证所有的数被抽到的概率相等,每个数被选取的概率必然为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vE2zuhEX-1650884011747)(https://www.zhihu.com/equation?tex=%5Cfrac%7Bk%7D%7BN%7D)] 。

  • 对于前k个数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w6zaleOX-1650884011748)(https://www.zhihu.com/equation?tex=n_1%2Cn_2%2C%5Cdots%2Cn_k)] ,我们保留下来,则 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SlUKpFTJ-1650884011748)(https://www.zhihu.com/equation?tex=p%28n_1%29%3Dp%28n_2%29%3D%5Cdots%3Dp%28n_k%29%3D1)] (下面连等采用 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5SieuP3s-1650884011748)(https://www.zhihu.com/equation?tex=p%28n_%7B1%3Ak%7D%29)] 的形式)
  • 对于第k+1个数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jhuHIfeC-1650884011749)(https://www.zhihu.com/equation?tex=n_%7Bk%2B1%7D)] ,我们以 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xJUoEUXJ-1650884011749)(https://www.zhihu.com/equation?tex=%5Cfrac%7Bk%7D%7Bk%2B1%7D)] 的概率保留它(这里只是指本次被保留下来),那么前k个数中的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jp9ZixoD-1650884011749)(https://www.zhihu.com/equation?tex=n_r%28r%5Cin%7B1%3Ak%7D%29)] 被保留的概率可以这样表示: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3GQclxXp-1650884011750)(https://www.zhihu.com/equation?tex=p%28n_r%E8%A2%AB%E4%BF%9D%E7%95%99%29%3Dp%28%E4%B8%8A%E4%B8%80%E8%BD%AEn_r%E8%A2%AB%E4%BF%9D%E7%95%99%29%5Ctimes%28p%28n_%7Bk%2B1%7D%E8%A2%AB%E4%B8%A2%E5%BC%83%29%2Bp%28n_%7Bk%2B1%7D%E8%A2%AB%E4%BF%9D%E7%95%99%29%5Ctimes+p%28n_r%E6%9C%AA%E8%A2%AB%E6%9B%BF%E6%8D%A2%29%29)] ,即 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y9ZB1pK9-1650884011750)(https://www.zhihu.com/equation?tex=p_%7B1%3Ak%7D%3D%5Cfrac%7B1%7D%7Bk%2B1%7D%2B%5Cfrac%7Bk%7D%7Bk%2B1%7D%5Ctimes+%5Cfrac%7Bk-1%7D%7Bk%7D%3D%5Cfrac%7Bk%7D%7Bk%2B1%7D)]
  • 对于第k+2个数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZqVI6VI0-1650884011750)(https://www.zhihu.com/equation?tex=n_%7Bk%2B2%7D)] ,我们以 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QnsfJcbL-1650884011751)(https://www.zhihu.com/equation?tex=%5Cfrac%7Bk%7D%7Bk%2B2%7D)] 的概率保留它(这里只是指本次被保留下来),那么前k个被保留下来的数中的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T7UjKQzH-1650884011751)(https://www.zhihu.com/equation?tex=n_r%28r%5Cin%7B1%3Ak%7D%29)] 被保留的概率为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g14lvWGE-1650884011751)(https://www.zhihu.com/equation?tex=p_%7B1%3Ak%7D%3D%5Cfrac%7Bk%7D%7Bk%2B1%7D%5Ctimes%28%5Cfrac%7B2%7D%7Bk%2B2%7D%2B%5Cfrac%7Bk%7D%7Bk%2B2%7D%5Ctimes+%5Cfrac%7Bk-1%7D%7Bk%7D%29%3D%5Cfrac%7Bk%7D%7Bk%2B1%7D%5Ctimes%5Cfrac%7Bk%2B1%7D%7Bk%2B2%7D%3D%5Cfrac%7Bk%7D%7Bk%2B2%7D)]
  • ……
  • 对于第i(i>k)个数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RG2WvTua-1650884011752)(https://www.zhihu.com/equation?tex=n_i)] ,我们以 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-emJJyWpN-1650884011752)(https://www.zhihu.com/equation?tex=%5Cfrac%7Bk%7D%7Bi%7D)] 的概率保留它,前i-1个数中的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t3TqJYnU-1650884011752)(https://www.zhihu.com/equation?tex=n_r%28r%5Cin%7B1%3Ai-1%7D%29)] 被保留的概率为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-haVXyWgY-1650884011752)(https://www.zhihu.com/equation?tex=p_%7B1%3Ak%7D%3D%5Cfrac%7Bk%7D%7Bi-1%7D%5Ctimes+%28%5Cfrac%7Bi-k%7D%7Bi%7D%2B%5Cfrac%7Bk%7D%7Bi%7D%5Ctimes+%5Cfrac%7Bk-1%7D%7Bk%7D%29%3D%5Cfrac%7Bk%7D%7Bi-1%7D%5Ctimes%5Cfrac%7Bi-1%7D%7Bi%7D%3D%5Cfrac%7Bk%7D%7Bi%7D)]

这样,我们可以制订策略:

对于前k个数,我们全部保留,对于第i(i>k)个数,我们以 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7xqE1x0v-1650884011753)(https://www.zhihu.com/equation?tex=%5Cfrac%7Bk%7D%7Bi%7D)] 的概率保留第i个数,并以 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fpAQfVOm-1650884011753)(https://www.zhihu.com/equation?tex=%5Cfrac%7B1%7D%7Bk%7D)] 的概率与前面已选择的k个数中的任意一个替换。

例题

398. 随机数索引

难度中等214收藏分享切换为英文接收动态反馈

给你一个可能含有 重复元素 的整数数组 nums ,请你随机输出给定的目标数字 target 的索引。你可以假设给定的数字一定存在于数组中。

实现 Solution 类:

  • Solution(int[] nums) 用数组 nums 初始化对象。
  • int pick(int target) 从 nums 中选出一个满足 nums[i] == target 的随机索引 i 。如果存在多个有效的索引,则每个索引的返回概率应当相等。

示例:

输入
["Solution", "pick", "pick", "pick"]
[[[1, 2, 3, 3, 3]], [3], [1], [3]]
输出
[null, 4, 0, 2]

解释
Solution solution = new Solution([1, 2, 3, 3, 3]);
solution.pick(3); // 随机返回索引 2, 3 或者 4 之一。每个索引的返回概率应该相等。
solution.pick(1); // 返回 0 。因为只有 nums[0] 等于 1 。
solution.pick(3); // 随机返回索引 2, 3 或者 4 之一。每个索引的返回概率应该相等。

提示:

  • 1 <= nums.length <= 2 * 104
  • -231 <= nums[i] <= 231 - 1
  • target 是 nums 中的一个整数
  • 最多调用 pick 函数 104 次
class Solution {
    vector<int> &nums;
public:
    Solution(vector<int> &nums) : nums(nums) {}

    int pick(int target) {
        int ans;
        for (int i = 0, cnt = 0; i < nums.size(); ++i) {
            if (nums[i] == target) {
                ++cnt; // 第 cnt 次遇到 target
                if (rand() % cnt == 0) {
                    ans = i;
                }
            }
        }
        return ans;
    }
};

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/random-pick-index/solution/sui-ji-shu-suo-yin-by-leetcode-solution-ofsq/

这个解法,其实就是相当于在target的情况下,随机选取到1个数的概率是一致的。

所以

image-20220425185158247

Spark中RangePartitioner的实现机制分析 一.分区器的区别 HashPartitioner分区可能HashPartitioner导致每个分区中数据量的不均匀。 RangePartitioner分区尽量保证每个分区中数据量的均匀,将一定范围内的数映射到某一个分区内。分区与分区之间数据是有序的,但分区内的元素是不能保证顺序的。 二.RangePartitioner分区执行原理概述 1.计算总体的数... 阅读详情

相关推荐

【71页PPT】工业40及智能制造解决方案(附下载方式)

2013年,工业4.0平台发布白皮书,正式确立其发展战略。工业4.0不仅是技术的升级,更是制造业思维的重构。工业4.0的核心是通过信息物理系统(CPS)实现工厂内外的互联,构建高度灵活的个性化生产模式。它不仅是技术革新,更是一种生产方式的变革,使传统行业界限模糊化,催生新的商业模式和合作形式。德国作为制造业强国,其GDP的25%和出口总额的60%依赖制造业,因此工业4.0成为其维持全球领先地位的重要战略。CPS是工业4.0的基石,通过计算、通信与控制技术(3C)实现物理世界与信息世界的深度融合。

2501_92808811的博客 950

等概率采样数据流中的数字

从数据流中等概率的采样k个数字。 怎么做呢?先拿到最开始的k个数字,然后以后的每个数字等概率的和这k个数字交换。那么就可以达到每个数字被抽取的概率是等概率的。 怎么证明呢? 类似题目:给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字)。如何才能从这个无穷尽的流中随机的选取1000个关键字?

suv1234的博客 1602

STM32F103+LAN9252实战:从站代码迁移中的5个硬件坑与解决方案

本文分享了将EtherCAT从站代码从STM32F767迁移至STM32F103平台时,搭配LAN9252遇到的五个典型硬件问题及解决方案。核心挑战包括时钟源不匹配、FSMC时序配置、中断映射错误、片选资源不足以及Flash烧录异常。文章通过实战经验,强调了硬件差异对代码迁移的关键影响,并提供了具体的调试思路与配置方法。

p5l2m9n4o6q的博客 698

第十讲 抽样方法概述

​ 随着信息技术和互联网技术飞速发展,数据获取方式变得多样化,大数据随之产生。大数据共同特征:数据量庞大,不断递增;数据当中由重要的特征或趋势;对于如何更好的搜寻,总结它们,我们没有明确的答案。​ 大量具有相同特征的数据集构成数据流。指的是相同的源目的IP地址、源目的端口号和协议字段的集合体。:某些IP报头字段中的值的组合。:1)根据四元组进行数据流的分类。2)可以通过哈希函数的方法,分类以后可以进行数据分组总数,总字节数的统计,持续时间统计等。

m0_54947284的博客 964

Coze实战:解锁多Bot协同与条件分支工作流的奥秘

本文详细介绍了在字节跳动Coze平台实现多Bot协同与条件分支工作流的方法。首先阐述了Coze平台的功能优势,包括丰富的插件、知识库和工作流功能。随后分步骤讲解了多Bot协同的实现:从准备工作、创建Bot到协同配置,并提供了电商客服的实例演示。在条件分支工作流部分,详细说明了条件节点的作用类型、条件设定方法以及具体配置操作,强调测试优化的重要性。最后通过电商平台综合案例,展示了多Bot协同与条件分支的实际应用效果,并针对常见问题提供解决方案。文章为开发者在Coze平台上构建智能应用提供了实用指导,有助于提升

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 450

【系统架构设计师】预测试卷一:综合知识(75道选择题)

软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式,架构风格反映领域中众多系统所共有的结构和 (48),强调对架构(49)的重用。 (48) A. 语义特性 B. 功能需求 C. 质量属性 D. 业务规则 (49) A. 分析 B. 设计 C.实现

数据知道的博客 7766

等概率数字筛选问题

如何等概率的从N个元素中选取出K个元素? 从1....n中随机输出m个不重复的数。(迅雷2011.10.21笔试题) 算法1 knuth(int n, int m) { for (int i=0; i<n; i++) { if ( rand_n()<m ) // rand_n()为生成[0,n)这个区间内的随机数

nwpulei 4448

群无人机航迹规划-虚拟管道

图源北理工全权老师团队虚拟管道相关论文,文字为个人理解,以ppt形式分享报告。

coldmood77的博客 669

水塘抽样算法及其代码实现(Scala)

水塘抽样算法及其代码实现(Scala)

k_wzzc的博客 772

Python爬虫实战:爬取500+网易云热门歌单,我摸清了全网最火的音乐规律

曲风:流行是主流,“情绪价值”比单纯曲风更重要;歌名:感性、场景化的歌名,更受用户偏爱。这次实战让我明白,Python不是冰冷的代码,而是能帮我们看清生活中隐藏规律的工具。从每天刷的歌单里,用爬虫和数据分析挖出用户的真实偏好,不仅满足了好奇心,还实实在在练会了技能。新手朋友可以从这个项目入手,既练习了爬虫基础,又学会了数据分析的核心逻辑,还能结合自己的音乐兴趣理解数据的意义。现在打开PyCharm,跟着代码跑一遍,你也能从网易云的热门歌单里,挖出属于自己的“音乐规律”!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1889

贪婪投影三角化算法

贪婪投影三角化算法是一种利用点云数据进行曲面重建的方法。其基本思想是通过迭代地连接点云中的邻近点来生成三角形,从而构建出整个表面。这种方法被称为“贪婪”,因为它在每一步仅考虑当前最优的策略,而不考虑全局的最优性。

twnkie的博客 1567

水塘抽样算法(Reservoir Sampling Algorithm)

文章目录应用场景算法步骤算法原理代码实现 应用场景 主要用于解决大数据流中的随机抽样问题,即:当内存有限,数据长度很大,甚至未知,那么如何从中随机选取k个数据,并且要求是等概率。 算法步骤 水塘抽样的步骤是,只遍历一次,每次都考虑一个问题:当前元素是否被选中,选中后替换之前选中的哪一个元素。 采样过程: step1:首先将前k个元素全部选取。 step2:对于第i个元素(i>k),以概率k/i来决定是否保留该元素,如果保留该元素的话,则随机丢弃掉原有的k个元素中的一个(即原来某个元素被丢掉的概率是1/

博客 3234

项目报告:基于Sentaurus TCAD的多沟道长度NMOS器件仿真、SPICE模型提取与环形振荡器电路验证

本项目基于Sentaurus TCAD工具,完成了从器件仿真到电路验证的全流程研究。首先构建了45nm、65nm和90nm三种沟道长度的NMOS器件,通过TCAD仿真分析了其电学特性,观察到明显的短沟道效应。随后提取了BSIM4 SPICE模型参数,并生成Hspice可用的模型文件。最后利用该模型设计了11级环形振荡器进行电路验证,证明了模型的实用性。研究结果表明,随着沟道长度缩短,器件性能虽有所提升,但短沟道效应导致关态电流显著增加,影响整体能效。本项目为纳米尺度MOSFET的建模与电路设计提供了完整的技

huanghm88的专栏 284

水塘抽样(Reservoir Sampling)

水塘抽样(Reservoir Sampling): 力扣398题目而来 问题描述:当内存无法加载全部数据时,如何从包含未知大小的数据流中随机选取k个数据,并且要保证每个数据被抽取到的概率相等。 特殊且常用情况:k=1,假设数据量为N 第一个数n1n_1n1​,我们选择保留,p(n1)=1p(n_1) = 1p(n1​)=1 第二个数n2n_2n2​,我们以12\frac{1}{2}21​的概率保留,那么n1n_1n1​被保留(不被覆盖)的概率p(n1)=1∗(1−12)=12p(n_1) = 1*(.

qq_42822363的博客 2041

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【计算引擎】水塘抽样算法

spark中的分区器有三种: 1.HashPartitioner分区可能HashPartitioner导致每个分区中数据量的不均匀。 2.RangePartitioner分区尽量保证每个分区中数据量的均匀,将一定范围内的数映射到某一个分区内。分区与分区之间数据是有序的,但分区内的元素是不能保证顺序的。(这里其实就用到了水塘抽样算法) 3.自定义 那水塘抽样算法是什么呢?能解决什么类型的问题呢? 问...

孟知之的搬砖填坑历险记 682

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

水塘抽样算法

LeetCode 相关算法题:382. 链表随机节点 398. 随机数索引 这个涉及到概率论里面的加法公式和乘法公式,不懂的可以先了解下再回来看。 水塘抽样算法用于对流式数据或者数据长度很长的数据中进行随机均匀抽样。一般是抽取k个样本,在数据流当前长度为N时,保证这k个样本被抽到的概率都是kN\frac{k}{N}Nk​。 要求空间复杂度为O(k),时间复杂度则为仅扫描数据一遍,即O(N)。 直接考虑k个样本相对困难,先可以考虑K=1的情况。 我们是从第一个元素开始遍历,假设当前遍历到第i个元素,并且在前i

超级码力 973

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

随机算法之水塘抽样算法

预计阅读时间:5 分钟我最近在 LeetCode 上做到两道非常有意思的题目,382 和 398 题,关于水塘抽样算法(Reservoir Sampling),本质上是一种随机概率算法,...

azl397985856的专栏 378

从零推导水塘抽样算法

虽然这算法是会而不难,代码实现也简单,但是也有必要模拟一下得出结果的步骤,权当帮助记忆了。

aeromr的博客 115

等概率整群抽样与多阶段抽样

概念 等概率抽样 抽样方法的一大类,指总体中的每个个体被抽中的概率相等 整群抽样 把总体划分为群,抽样时只需要群的抽样框,对群内所有单位进行抽样调查。 优点:由于只需要群的抽样框,简化了编制抽样框的工作量 缺点:估计精度较差,因为同一群内的单元比较相似,在样本量相同的情况下,抽样误差较大 多阶段抽样 类似整群抽样,首先抽取群,但不是调查群内的所有基本单元,而是进一步抽样,从群中选择若干个基本单元进行调查。例如,第一阶段抽取初级单元,第二阶段抽取二级单元,第三阶段抽取接受调查的基本单元就是三阶段抽

m0_46246301的博客 5780

水塘采样(Reservoir Sampling)——固定样本数的流式随机抽样算法

特性描述目标从无法存储的无限数据流中抽取 k 个样本空间复杂度O(k)时间复杂度O(1) 每元素核心优势精确等概率、无需存储全部数据关键思想概率递减 + 随机替换水塘采样是流式数据分析中最基础、最重要的算法之一。很多高级算法(例如在线学习采样、分布式采样)实际上都是它的变体和扩展。

weixin_62497867的博客 388

LeetCode 398. 随机数索引(哈希表/水塘抽样)

文章目录题目方法一:哈希表方法二:水塘抽样(不定长数据流)Reference 题目 398. 随机数索引 方法一:哈希表 在构造函数中,使用哈希表记录nums中相同元素的下标 在pick函数中,从哈希表中取出target对应的下标列表,然后随机选择其中一个下标并返回 class Solution { Map<Integer, List<Integer>> map = new HashMap<>(); public Solution(int[] nu

xylitolz的博客 268

labuladong的算法小抄pdf_随机算法:水塘抽样算法

读完本文,你可以去力扣拿下如下题目:382.链表随机节点398.随机数索引-----------我最近在 LeetCode 上做到两道非常有意思的题目,382 和 398 题,关于水塘抽样算法(Reservoir Sampling),本质上是一种随机概率算法,解法应该说会者不难,难者不会。我第一次见到这个算法问题是谷歌的一道算法题:给你一个未知长度的链表,请你设计一个算法,只能遍历一次,随机地返回...

weixin_39520210的博客 412

水池抽样算法

dansam的专栏 466

Reservoir Sampling水塘抽样

在读2020年发表在SIGCOMM上的Data Center领域的一篇文章:《PINT:Probabilistic In-band Network Telemetry》。 论文提到了在INT的path tracing应用中, 将交换机ID赋值给v【即不同数据包到达同一交换机的v一致】 Baseline solution:在每个包上写一个采样ID(sampled ID),使用TTL阈得到跳数并运行Reservoir Sampling.【**Reservoir Sampling(水塘抽样)**允许我们在交换机

sihsd的博客 555
上一篇: android studio 调用C++代码
下一篇: C++函数返回优化
黑猫爱小鹿
博客等级 码龄8年 1万+粉丝 205原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值