積分轉盤抽獎算法設計解析

積分轉盤抽獎很常見,那麼如何合理設計抽獎次數、每次抽獎消耗積分達到運營目的?

积分转盘抽奖算法设计解析

一、背景

大家在各類產品中很常見積分轉盤抽獎,比如天貓積分抽獎等、常見的積分抽獎都是獎品價值大小不等,中獎概率不等。

积分转盘抽奖算法设计解析

二、隨機概率抽獎算法

抽獎主要有以下幾種做法,我們不考慮純前端控制的方法。採用客戶端+服務端方式,這是比較科學的。

以下說明兩種常見的抽獎概率的算法:

(1)隨機抽獎概率算法設計

獎項數組是一個二維數組,記錄本次抽獎的獎項信息:

  1. 假設產品有n項、分別是:平板電腦、數碼相機、音箱設備、4G優盤.、10積分、下次沒準就能中哦。
  2. id表示中獎等級,prize表示獎品,v表示中獎權重,v必須為整數,v可以為0意味著該獎項抽中的幾率是0。
  3. 假設數組中v的總和為Sv(基數越大越能體現概率的準確性),那麼每個獎品中獎概率就是v/Sv=(v1+v2+…+Am)(假設總和為100,平板電腦的中獎概率為1,中獎概率為百分之一,如果總和為100,中獎概率為萬分之一)。
  4. 每次前端請求,後臺循環獎項設置數組,通過概率計算獲取抽獎的獎項,輸出數據給前端頁面 。

經典的概率算法:

积分转盘抽奖算法设计解析积分转盘抽奖算法设计解析
积分转盘抽奖算法设计解析积分转盘抽奖算法设计解析

預先設置一個數組,假設數組為:array(100,200,300,400)。

開始是從1,1000 這個概率範圍內篩選第一個數是否在他的出現概率範圍之內,如果不在,則將概率空間,也就是k的值減去剛剛的那個數字的概率空間,在本例當中就是減去100,也就是說第二個數是在1,900這個範圍內篩選的。

這樣篩選到最終,總會有一個數滿足要求。就相當於去一個箱子裡摸東西,第一個不是,第二個不是,第三個還不是,那最後一個一定是。

這個算法簡單,而且效率非常高。

(2)根據概率和剩餘獎品數量來分配一個空間,再在這個空間中取隨機數,判斷隨機數落在哪個區塊方法獲得抽獎結果

  1. 設置總的概率區間;
  2. 存儲每個獎品新的概率區間;
  3. 遍歷每個獎品,設置概率區間,總的概率區間為每個概率區間的總和;
  4. 每個概率區間為獎品概率乘以1000(把三位小數轉換為整),再乘以剩餘獎品數量,獲取總的概率區間中的隨機數;
  5. 判斷取到的隨機數在哪個獎品的概率區間中。

eg.有5個獎品,分別是:蘋果、香蕉、橙子、葡萄、柚子。

中獎機率如下:蘋果:10%;香蕉:5%;橙子:60%;葡萄:10%;柚子:15%。

根據獎品個數和中獎機率定義一個獎品概率數組,總和為100,生成區間數組【0,10,15,75,85,100】,定義一個隨機數,隨機數落入哪個區間,就中哪個獎品。

三、等概率抽獎具體案例

因為之前這個項目RD沒有給後臺設置獎品時加概率的配置,所以整個抽獎體系只能靠控制獎品項、控制庫存數量來控制抽獎結果,而且運營了一段數據,根據運營數據分析做出了一些調整,所以等概率中獎會說明的詳細一些。

(1)抽獎頁面的原型設計

积分转盘抽奖算法设计解析

(2)設置不同積分值

項目上線後,運營上線了積分可兌換的獎品,不同產品對應不同積分值兌換,設置了轉盤可中獎的不同積分值。

但上線兩週後,運營發現數據不是自己想要的,雖然拉新促活的目的達到了,用戶抽獎參與度也很高,但因為每天設置的抽獎次數過多,每次抽獎消耗的積分過少,每個用戶每日中獎的積分數量增長過高,獎品兌換率過高。

於是有了以下思考:應該設置用戶每日抽獎幾次、每次抽獎消耗多少積分才能合理達到運營想要效果。

(3)在此我們假設所有的獎項都是積分數值

討論的前提是當前項目中每個獎品的中獎概率相等的情況,設獎品有m項、每項積分數分別為A1、A2、…、Am。

每日可抽獎次數為n,每次抽獎消耗的積分為a,根據數學知識我們知道抽獎次數樣本足夠大時,抽獎幾率應該趨近於相等。所以每輪抽獎(n次為一輪)可獲得的積分數:Sn=(A1+A2+…+Am)-n*a

【所有獎品抽到一次獲得的總和-抽獎n次消耗的積分數】

顯然易見:若想用戶抽獎積分為負增長,只需Sn<0即可。若想用戶抽獎積分為正增長,則只需Sn>0即可當每天可抽獎n次時,每天可獲得的積分和平均值=Sn*n/m。

活動的最終目的還是促活、吸引更多的人來參與活動兌換獎品。那麼假設兌換的獎品所需積分數為Y,想要用戶兌換一個獎品的日活天數為d,使Y/d=(A1+A2+…+Am)*n/m即可。

【每個獎品需要的分數/想要用戶獲得的天數=用戶每天可獲得積分數量】

Y可根據獎品的平均積分數或最小積分數來計算,以此達到運營拉新促活的目的。

四、總結

以上是最近手頭一個項目的經驗及相關思考,積分轉盤抽獎雖然常見,但是真正做起來需要考慮的點也很多,比如為了靈活運營,抽獎次數和消耗的積分後臺可做成可配等等。

每一個看似常見的功能都要自己親自去設計,去跟進開發測試,才會有新的理解和收穫。

以上,一點經驗分享,歡迎大家一起交流,多多指點。

題圖來自網絡


分享到:


相關文章: