乐清 网站建设英德建设网站
web/
2025/10/1 1:45:43/
文章来源:
乐清 网站建设,英德建设网站,一站式服务理念,工业设计招聘信息网站蓄水池抽样算法 描述Java基本实现蓄水池模型参与抽样 描述
该算法可用于从数据流中随机抽取指定数量的样本。 假设目标样本数量为 n#xff0c;参与抽样的数量为 i。 蓄水池容量为 n#xff0c;参与抽样的数量为 i
每接收一个样本#xff0c;不断计算抽样结果#xff1a;… 蓄水池抽样算法 描述Java基本实现蓄水池模型参与抽样 描述
该算法可用于从数据流中随机抽取指定数量的样本。 假设目标样本数量为 n参与抽样的数量为 i。 蓄水池容量为 n参与抽样的数量为 i
每接收一个样本不断计算抽样结果
i n 时直接将样本留在蓄水池i n 时随机从 参与抽样的样本中选择一个如果超过蓄水池水位则淘汰新进来的元素否则以新进来的元素替换刚刚选中的那个样本
最终每个元素的留下概率为
i n 时概率为 1i n 时概率为 n i \frac {n} {i} in
Java基本实现
提供基本实现思路实际落地适当改造
蓄水池模型
public class Award {/*** 中奖人数组*/private int[] persons;/*** 参与人数*/private int count;public Award(int award) {this.persons new int[award];}/*** 参与抽奖* param id*/public void join(int id) {if (count persons.length) {persons[count] id;count;} else {count;int result (int) (Math.random() * count);if (result persons.length - 1) {persons[result] id;}}}public int[] getPersons() {return persons;}
}参与抽样
模拟抽样实际开发中更适合外部数据来一个计算一个抽样结果 抽样目标10个样本数 10000000 个
Award award new Award(10);
for (int i 0; i 10000000; i) {award.join(i);
}这个系列为个人日常分享仅作参考。
各种解决方案欢迎留言。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84764.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!