解决方案(一)蓄水池抽样算法(可用于抽样,抽奖等场景)

蓄水池抽样算法

    • 描述
    • Java基本实现
      • 蓄水池模型
      • 参与抽样

描述

该算法可用于从数据流中随机抽取指定数量的样本。
假设目标样本数量为 n,参与抽样的数量为 i。
蓄水池容量为 n,参与抽样的数量为 i

每接收一个样本,不断计算抽样结果:

  • i < n 时,直接将样本留在蓄水池
  • i >= n 时,随机从 参与抽样的样本中选择一个,如果超过蓄水池水位,则淘汰新进来的元素,否则以新进来的元素替换刚刚选中的那个样本

最终每个元素的留下概率为:

  • i <= n 时,概率为 1
  • i > 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/news/88359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

协程是什么?为何说协程具有同步的编程方式又具有异步的性能?

协程&#xff08;Coroutine&#xff09;是一种并发编程模型&#xff0c;它允许程序在单线程内实现多个独立的执行线程&#xff0c;这些线程可以非阻塞地挂起和恢复&#xff0c;以实现协作式多任务处理。协程的核心思想是让程序员能够控制执行的流程&#xff0c;而不是完全交给操…

如何通过bat批处理实现快速生成文件目录,一键生成文件名和文件夹名目录

碰对了情人&#xff0c;相思一辈子。 具体方法步骤&#xff1a; 一、创建一个执行bat文件&#xff08;使用记事本即可&#xff09;&#xff1b; 1、新建一个txt文本空白记事本文件 2、复制以下内容进记事本内 dir/a/s/b>LIST.TXT &#xff08;其中LIST.TXT文件名是提取后将…

爬虫入门基础-HTTP协议过程

在进行网络爬虫开发之前&#xff0c;了解HTTP协议的基本过程是非常重要的。HTTP协议是Web通信的基础&#xff0c;也是爬取网页数据的核心。本文将为您详细介绍HTTP协议的过程&#xff0c;帮助您理解爬虫背后的网络通信机制。让我们一起来探索吧&#xff01; 一、什么是HTTP协议…

Linux入门教程||Shell echo命令||Shell printf 命令

Shell 的 echo 指令与 PHP 的 echo 指令类似&#xff0c;都是用于字符串的输出。命令格式&#xff1a; echo string您可以使用echo实现更复杂的输出格式控制。 1.显示普通字符串: echo "It is a test"这里的双引号完全可以省略&#xff0c;以下命令与上面实例效果一…

产权未转移登记的离婚析产协议不能对抗债权人

债权人代位析产纠纷作为一个新的民事案由&#xff0c;是民事执行阶段中债务人不能到期清偿债务&#xff0c;又怠于分割共同财产或以诉讼方式分割共同财产&#xff0c;而由债权人请求代替债务人向其他共有人提出分割财产以实现债权的诉讼。债权人代位析产&#xff0c;增加了债权…

小皮面板配置Xdebug,调试单个php文件

小皮面板配置Xdebug 首先下载phpstrom&#xff0c;和小皮面板 打开小皮面板&#xff0c;选中好要使用的php版本 然后点击【管理】> 【php扩展】> 【xdebug】 然后打开选中好版本的php位置 D:\Program_Files\phpstudy_pro\Extensions\php\php7.4.3nts打开php.ini文件…

Java8实战-总结34

Java8实战-总结34 重构、测试和调试使用 Lambda 重构面向对象的设计模式观察者模式责任链模式 重构、测试和调试 使用 Lambda 重构面向对象的设计模式 观察者模式 观察者模式是一种比较常见的方案&#xff0c;某些事件发生时&#xff08;比如状态转变&#xff09;&#xff0…

积分商城运营成功的7个关键要素

积分商城是一种受欢迎的私域营销工具&#xff0c;可以帮助企业吸引和留住客户&#xff0c;提高销售和客户忠诚度。然而&#xff0c;要确保积分商城的运营成功&#xff0c;需要考虑多个关键要素。本文将深入探讨这些要素&#xff0c;以帮助企业打造一个成功的积分商城。 第一要…

VIO和预积分(蒙圈的请过来,带你不蒙圈)

大佬的世界&#xff0c;你不会懂&#xff0c;就像一行行公式&#xff0c;人家觉得很简单&#xff0c;你却要读很多遍&#xff0c;不过还好&#xff0c;我们从普通人的世界来解读VIO和预积分。 预积分 拿大佬的话来热场&#xff0c;本章要介绍一种在紧耦合系统中十分常见的IMU…

IOTDB的TsFile底层设计

目录 概述 数据模型 数据结构 元数据注册 读取和写入 设计思想 主要过程

it网络设备监控系统

企业对网络监控系统的需求也在增加。网络监控系统是一种软件和硬件的组合&#xff0c;用于监控和管理企业的网络系统。它帮助企业实时了解网络情况&#xff0c;防范和处理网络问题&#xff0c;保证企业业务的正常使用。那么&#xff0c;IT网络监控系统监控什么设备呢&#xff1…

前端求职指南

简历求职指南 为什么没有面试&#xff1f; 1、简历写的不好 2、简历投递不好 简历的定义是什么&#xff1f; 是求职者向未来雇主展示自己专业技能和职业素养的自我推销工具&#xff0c;以找到工作为目的。 什么时候改简历&#xff1f; 每半年或一年更新一次工作中的成长 再工…

基于VR元宇宙技术搭建林业生态模拟仿真教学系统

随着科技的飞速发展&#xff0c;教学方式也正在经历着巨大的变革。林业经济学元宇宙虚拟教学系统作为一种新兴的教学方式&#xff0c;为学生和教师提供了一个全新的、沉浸式的学习和教学环境。 森林管理和监测 元宇宙技术可以用于森林管理和监测。通过无人机、传感器和虚拟现实…

docker 安装 nessus新版、awvs15-简单更快捷

一、docker 安装 nessus 参考项目地址&#xff1a; https://github.com/elliot-bia/nessus 介绍&#xff1a;几行代码即可一键安装更新 nessus -推荐 安装好 docker后执行以下命令 #拉取镜像创建容器 docker run -itd --nameramisec_nessus -p 8834:8834 ramisec/nessus …

GoogleTest部署实践--测试用例代码

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一、GoogleTest简介二、GoogleTest工具适用岗位--测开岗、开发岗三、GoogleTest的理念四、GoogleTest的环境搭建五、GoogleTest 实战--编写googlet…

Spring Boot自动装配原理超详细解析

目录 前言一、什么是SPI&#xff1f;1. JDK中的SPI2. Spring中的SPI2.1 加载配置2.2 实例化 二、Import注解和ImportSelector是什么&#xff1f;1. 代码示例2. 过程解析3. 源码分析 三、Spring Boot的自动装配1.源码分析2.代码示例3.Spring Boot自带的自动装配 四、总结 前言 …

算法基础之二分查找

原题链接 一 、二分查找中的mid1和mid-1的问题 二分查找中的边界问题处理不好很容易导致死循环和计算错误的问题&#xff0c;以题目 数的范围为例。 题目大意 ​ 二分查找重复数第一次出现的位置和最后一次出现的位置。 数学含义 ​ 第一次位置即 找到 一个长度最大的 >X 区…

golang入门笔记——pprof性能分析

文章目录 简介runtime/pprof的使用命令行交互网络服务性能分析pprof与性能测试结合压测工具go-wrk 简介 golang性能分析工具pprof的8个指标 1.性能分析的5个方面&#xff1a;CPU、内存、I/O、goroutine&#xff08;协程使用情况和泄漏检查&#xff09;、死锁检测以及数据竟态…

医院电子病历编辑器,EMRE(EMR Editor)源码

电子病历主要面向医院机构医生、护士&#xff0c;提供对住院病人的电子病历书写、保存、修改、打印等功能。本系统基于云端SaaS服务方式&#xff0c;通过浏览器方式访问和使用系统功能&#xff0c;提供电子病历在线制作、管理和使用的一体化电子病历解决方案&#xff0c;为医疗…

asisctf 2023 web hello wp

hello 开题&#xff0c;直接给了源码。 <?php /* Read /next.txt Hint for beginners: read curls manpage. */ highlight_file(__FILE__); $url file:///hi.txt; if(array_key_exists(x, $_GET) &&!str_contains(strtolower($_GET[x]),file) && !str_c…