1. 程式人生 > >公司活動,概率抽獎【不限定總人數,不限定中獎數量】設計

公司活動,概率抽獎【不限定總人數,不限定中獎數量】設計

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;