多线程平均分区随机并行抽取算法 
均匀分布数学原理:
  设连续型随机变量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个区,算法同上.当你再点击"重抽初始化[随机排序分区]"命令时,又重新给每个抽奖人一个随机号码,又重新排序分区.
如果具备高性能处理器或多个处理器或宽裕的内存资源,才能真正发挥多线程并行抽取的功能.

算法上均匀分布的随机抽奖,如何避免现实的现场抽奖的中奖号码有时出现集中扎堆的现象?相关推荐

  1. java双色球抽奖。抽奖号码由六个红球号码和一个蓝球号码组成红色号码由1~33组成,不能重复,蓝色号码由1~16组成可以与红色号码数组重复。用户输入中奖号码后打印最后的中奖结果情况。

    分析: 1.创建三个方法分别得到开奖号码(奖池号码),中奖号码(用户输入的中奖号码),和一个避免开奖号码和中奖号码里出现重复号码的comPare方法. 2.在主方法里调用方法得到开奖号码,中奖号码,在 ...

  2. 抽奖算法-指定概率的随机

    抽奖模型 普通概率模型 普通概率模型是最常用的一种模型,但是在游戏运营过程中的确发现很多小白玩家不能正确理解--他们认为中奖率 10% 的设定等同于抽 10 次肯定会中一次.这显然是错误的,普通概率模 ...

  3. python概率随机抽奖源码_抽奖算法-指定概率的随机

    抽奖模型 普通概率模型 普通概率模型是最常用的一种模型,但是在游戏运营过程中的确发现很多小白玩家不能正确理解--他们认为中奖率 10% 的设定等同于抽 10 次肯定会中一次.这显然是错误的,普通概率模 ...

  4. 地图点随机分布均匀_如何在单位球内产生一个均匀分布的随机的点?

    在光线跟踪算法里,有一个子问题:如何在一个半径为1的单位球里面,产生一个均匀分布的随机的点(相同的体积里有相同数量的点).下面这篇文章里给出了5种可能的方法 (参考文献[3]).当然,后面我们会看到, ...

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

    读完本文,你可以去力扣拿下如下题目: 382.链表随机节点 398.随机数索引 -----------我最近在 LeetCode 上做到两道非常有意思的题目,382 和 398 题,关于水塘抽样算法( ...

  6. 从算法上解读自动驾驶是如何实现的?

    从算法上解读自动驾驶是如何实现的? 科技新闻 小鹏汽车 2016-03-28 10:42 分享 3评论 [摘要]车辆路径规划问题中路网模型.路径规划算法和交通信息的智能预测为关键点. 由于驾驶员的驾驶 ...

  7. [0,1]上均匀分布随机数的产生

    文章目录 自然取中法 倍积取中法 一阶线性同余法 自然取中法 步骤: 任取一个N位整数做初值 将该数平方,取中间N位数,作为第一个随机整数 再将第一个随机整数平方,取中间N位数,得到第二个随机整数 以 ...

  8. 机器学习——集成学习算法(Adaboost、随机森林)

    集成算法简述 什么是集成学习 如何得到多个个体学习器 集成学习常用算法 Bagging 自助采样 学习器结合 包外估计 随机森林 Adaboost Boosting Adaboost算法原理 注意 什 ...

  9. 深度学习的优化算法——梯度下降和随机梯度下降

    深度学习的优化算法--梯度下降和随机梯度下降 优化算法在深度学习中存在的问题 优化在深度学习中有很多挑战,下面描述其中两个,局部最小值和鞍点. 1.局部最小值 深度学习模型的目标函数可能存在若干极点- ...

  10. Dataset之图片数据增强:设计自动生成汽车车牌图片算法(cv2+PIL)根据随机指定七个字符生成逼真车牌图片数据集(自然场景下+各种噪声效果)可视化

    Dataset之图片数据增强:设计自动生成汽车车牌图片算法(cv2+PIL)根据随机指定七个字符生成逼真车牌图片数据集(自然场景下+各种噪声效果)可视化 导读 设计自动生成汽车车牌图片算法,基于cv2 ...

最新文章

  1. MongoDB 维护Replica Set
  2. 风暴数码论坛教程--apk和odex的介绍和合并
  3. java如何追加写入txt文件
  4. 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现
  5. 第六天2017/04/11(1:结构体链表基础和相关经典操作)
  6. 简单的 密文认证方式
  7. 腾讯携手2020全球C++及系统软件技术大会
  8. Android Alarm自上而下 调试浅析
  9. 47 CO配置-控制-利润中心会计-设置实际数据的控制参数
  10. python每隔30s检查一次_Python的全局解释器锁
  11. CentOS配置DHCP服务器
  12. [vscode] 显示空格
  13. 生意参谋指数转化api
  14. JavaScript对象 、堆与栈
  15. erp框架 saas_Saas模式ERP系统
  16. 休假申请单位取消分钟、小时,增加“.”。
  17. 图片指纹技术检测图片相似度
  18. html如何制作艺术字体,影视动画制作软件怎么制作多彩立体字 艺术字体制作软件 字体渐变效果...
  19. 4.1 数据仓库基础与Apache Hive入门
  20. 再见,马云!再见,世界首富!

热门文章

  1. MATLAB获取字符串中两个特定字符之间的内容
  2. Controller的生命周期是Transient还是PerWebRequest?
  3. 针对binlog MIXED格式对表的增删改统计分析
  4. OSPF 的六种 LSA类型
  5. 软件测试工程师的工作总结
  6. Android7.1 Offload模式下的音频数据抽取过程
  7. JM8.6之erc_api.c文件初探
  8. yuv420和yuv420p的区别
  9. rtp h264注意点(FU-A分包方式说明)
  10. dev多行注释_Shell 实现多行注释的几种常用方法