算法上均匀分布的随机抽奖,如何避免现实的现场抽奖的中奖号码有时出现集中扎堆的现象?
多线程平均分区随机并行抽取算法
均匀分布数学原理:
设连续型随机变量X的分布函数为F(x)=(x-a)/(b-a),a≤x≤b则称随机变量X服从[a,b]上的均匀分布,记为X~U[a,b]。若[x1,x2]是[a,b]的任一子区间,则P{x1≤x≤x2}=(x2-x1)/(b-a)这表明X落在[a,b]的子区间内的概率只与子区间长度有关,而与子区间位置无关,因此X落在[a,b]的长度相等的子区间内的可能性是相等的,所谓的均匀指的就是这种等可能性。均匀分布的期望为(a+b)/2,方差为(b-a)^2/12。在实际问题中,当我们无法区分在区间[a,b]内取值的随机变量X取不同值的可能性有何不同时,我们就可以假定X服从[a,b]上的均匀分布。
上述算法从数学角度来分析,很正确,但在实际的随机抽奖中,一旦出现号码集中现象,用户的心里肯定很纠结,如何克服或减少这个现场的发生你呢?
场景假设:某公司要搞一个年终抽奖,共有603名员工参与.打算只抽取500个一等奖,每次抽取6个.每个员工都有自己的身份编号,比如:A001至A603,他们的名字为了便于测试,假设为B001至B603,按照这个顺序规律,信息用Excel做好,共占603行,如下图:
然后全部导入到抽奖系统的数据库中,共占603行.单位员工的编号,作为主关键字不能为空或重复,也可以使用手机号码或身份证号码等.抽奖前,右击软件界面,在弹出的菜单中,选择“重抽初始化[默认:主字段排序分区]”,进行初始化,然后预备,抽奖.假设是第一次抽取,系统把所有参与者均分为6个区,零头归为最后一个区.6个线程同时滚动抽取.滚动停止界面如下:
此算法的最大优点可以避免中奖人主字段扎堆现象.比如同一个部门的员工编号往往紧挨在一起,有时中奖人数在某些部门较多,某些部门没有.通过此方法可以在一定程度上缓解一下
假设第一次抽奖前,右击软件界面,在弹出的菜单中,选择"重抽初始化[随机排序分区]",进行初始化,然后预备,反复开始抽奖、停止 抽奖时,每次滚动界面停止时,类似界面如下:
6个中奖人的主字段没有规律可循.实际上,重抽初始化[随机排序分区]时,系统给每个抽奖人一个随机号码,然后,系统按照这个号码排序,然后也均分成6个区,算法同上.当你再点击"重抽初始化[随机排序分区]"命令时,又重新给每个抽奖人一个随机号码,又重新排序分区.
如果具备高性能处理器或多个处理器或宽裕的内存资源,才能真正发挥多线程并行抽取的功能.
算法上均匀分布的随机抽奖,如何避免现实的现场抽奖的中奖号码有时出现集中扎堆的现象?相关推荐
- java双色球抽奖。抽奖号码由六个红球号码和一个蓝球号码组成红色号码由1~33组成,不能重复,蓝色号码由1~16组成可以与红色号码数组重复。用户输入中奖号码后打印最后的中奖结果情况。
分析: 1.创建三个方法分别得到开奖号码(奖池号码),中奖号码(用户输入的中奖号码),和一个避免开奖号码和中奖号码里出现重复号码的comPare方法. 2.在主方法里调用方法得到开奖号码,中奖号码,在 ...
- 抽奖算法-指定概率的随机
抽奖模型 普通概率模型 普通概率模型是最常用的一种模型,但是在游戏运营过程中的确发现很多小白玩家不能正确理解--他们认为中奖率 10% 的设定等同于抽 10 次肯定会中一次.这显然是错误的,普通概率模 ...
- python概率随机抽奖源码_抽奖算法-指定概率的随机
抽奖模型 普通概率模型 普通概率模型是最常用的一种模型,但是在游戏运营过程中的确发现很多小白玩家不能正确理解--他们认为中奖率 10% 的设定等同于抽 10 次肯定会中一次.这显然是错误的,普通概率模 ...
- 地图点随机分布均匀_如何在单位球内产生一个均匀分布的随机的点?
在光线跟踪算法里,有一个子问题:如何在一个半径为1的单位球里面,产生一个均匀分布的随机的点(相同的体积里有相同数量的点).下面这篇文章里给出了5种可能的方法 (参考文献[3]).当然,后面我们会看到, ...
- labuladong的算法小抄pdf_随机算法:水塘抽样算法
读完本文,你可以去力扣拿下如下题目: 382.链表随机节点 398.随机数索引 -----------我最近在 LeetCode 上做到两道非常有意思的题目,382 和 398 题,关于水塘抽样算法( ...
- 从算法上解读自动驾驶是如何实现的?
从算法上解读自动驾驶是如何实现的? 科技新闻 小鹏汽车 2016-03-28 10:42 分享 3评论 [摘要]车辆路径规划问题中路网模型.路径规划算法和交通信息的智能预测为关键点. 由于驾驶员的驾驶 ...
- [0,1]上均匀分布随机数的产生
文章目录 自然取中法 倍积取中法 一阶线性同余法 自然取中法 步骤: 任取一个N位整数做初值 将该数平方,取中间N位数,作为第一个随机整数 再将第一个随机整数平方,取中间N位数,得到第二个随机整数 以 ...
- 机器学习——集成学习算法(Adaboost、随机森林)
集成算法简述 什么是集成学习 如何得到多个个体学习器 集成学习常用算法 Bagging 自助采样 学习器结合 包外估计 随机森林 Adaboost Boosting Adaboost算法原理 注意 什 ...
- 深度学习的优化算法——梯度下降和随机梯度下降
深度学习的优化算法--梯度下降和随机梯度下降 优化算法在深度学习中存在的问题 优化在深度学习中有很多挑战,下面描述其中两个,局部最小值和鞍点. 1.局部最小值 深度学习模型的目标函数可能存在若干极点- ...
- Dataset之图片数据增强:设计自动生成汽车车牌图片算法(cv2+PIL)根据随机指定七个字符生成逼真车牌图片数据集(自然场景下+各种噪声效果)可视化
Dataset之图片数据增强:设计自动生成汽车车牌图片算法(cv2+PIL)根据随机指定七个字符生成逼真车牌图片数据集(自然场景下+各种噪声效果)可视化 导读 设计自动生成汽车车牌图片算法,基于cv2 ...
最新文章
- MongoDB 维护Replica Set
- 风暴数码论坛教程--apk和odex的介绍和合并
- java如何追加写入txt文件
- 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现
- 第六天2017/04/11(1:结构体链表基础和相关经典操作)
- 简单的 密文认证方式
- 腾讯携手2020全球C++及系统软件技术大会
- Android Alarm自上而下 调试浅析
- 47 CO配置-控制-利润中心会计-设置实际数据的控制参数
- python每隔30s检查一次_Python的全局解释器锁
- CentOS配置DHCP服务器
- [vscode] 显示空格
- 生意参谋指数转化api
- JavaScript对象 、堆与栈
- erp框架 saas_Saas模式ERP系统
- 休假申请单位取消分钟、小时,增加“.”。
- 图片指纹技术检测图片相似度
- html如何制作艺术字体,影视动画制作软件怎么制作多彩立体字 艺术字体制作软件 字体渐变效果...
- 4.1 数据仓库基础与Apache Hive入门
- 再见,马云!再见,世界首富!