公司活动,概率抽奖【不限定总人数,不限定中奖数量】设计

 

BEGIN;

 

需求:
      如下中奖率
          一等奖 5%
          二等奖 30%
          安慰奖 65%

 

 

 

设计:
以随机数实现,并做统计防线,控制概率的准确性


1、以100个数字为基准,实现百分比数。

 

一等奖 {1,2,3,4,5}
二等奖 {6,7,...,29,30}
安慰奖 {31,32,...,99,100}


2、每次抽奖,获取一个1-100的随机数,并判断属于哪个奖品

 

if(r > 30) 安慰奖
else if(r > 5) 二等奖
else 一等奖


3、统计此次中奖的奖品已经中奖的人数,以及当前抽奖的总人数,计算出当前此次奖品的已中概率,判断是否还能再中此类奖品,若不能,则默认给安慰奖,假设当前中奖的奖品为 二等奖

 

当前二等奖中奖率 = 当前中二等奖奖品总数 / 当前抽奖总数
if(当前二等奖中奖率 < 配置概率)
// 可以中二等奖奖品
else
// 二等奖奖品已经中完,默认给中安慰奖



例:
    当前中二等奖奖品总数: 26
    当前抽奖总数:87
    当前二等奖中奖率 = 26 / 87 = 0.2988 = 29.88%
    0.2988 < 0.3
    结果:中奖

例:
    当前中二等奖奖品总数: 27
    当前抽奖总数:87
    当前二等奖中奖率 = 27 / 87 = 0.3103 = 31.03%
    0.3103 > 0.3
    结果:已经不能再中奖,默认给安慰奖

 

 

 

 

 

 

END;

 

技术交流

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值