紅包/抽獎實現(xiàn)方案

1.獎品抽獎

以前做抽獎,有那種抽獎的算法,比如大轉(zhuǎn)盤,有手機,積分,券等。

算法原理 + 完整示例
一、算法原理
這種抽獎算法叫區(qū)間概率映射法,核心思路:
把所有獎品的中獎概率,按統(tǒng)一精度放大成整數(shù)權(quán)重,保證總權(quán)重對應(yīng) 100% 概率。
根據(jù)權(quán)重給每個獎品劃分一段連續(xù)、不重疊的數(shù)字區(qū)間。
抽獎時隨機生成一個數(shù)字,該數(shù)字落在哪個獎品的區(qū)間,就抽中對應(yīng)獎品。
權(quán)重越大、區(qū)間越長,中獎概率越高,公平且精準(zhǔn)。

二、完整示例
設(shè)定 6 種獎品,總概率嚴(yán)格為 100%,統(tǒng)一乘以 1000 轉(zhuǎn)為權(quán)重:
表格
獎品概率與區(qū)間配置表

獎品 中獎概率 對應(yīng)權(quán)重 分配數(shù)字區(qū)間
手機 0.9% 9 1 ~ 9
50 元優(yōu)惠券 5% 50 10 ~ 50
10 元優(yōu)惠券 20% 200 51 ~ 200
100 積分 10% 100 20~ 359
20 積分 24.1% 241 360 ~ 600
謝謝參與 40% 400 601 ~ 1000

抽獎結(jié)果示例
抽獎時隨機生成 1~1000 范圍內(nèi)的整數(shù),數(shù)字落于對應(yīng)區(qū)間即中該獎品:
隨機數(shù) 3 → 落在 1~9 → 中手機
隨機數(shù) 30 → 落在 10~59 → 中 50 元優(yōu)惠券
隨機數(shù) 120 → 落在 60~259 → 中 10 元優(yōu)惠券
隨機數(shù) 300 → 落在 260~359 → 中 100 積分
隨機數(shù) 500 → 落在 360~600 → 中 20 積分
隨機數(shù) 800 → 落在 601~1000 → 謝謝參與

可以將1 ~ 9,10 ~ 59,60 ~ 259, ... ,一直到601 ~ 1000,每個區(qū)間作為一個數(shù)組元素,統(tǒng)一放到一個數(shù)組里面,抽獎的隨機數(shù)就遍歷這個數(shù)組,比如是90,那就落在數(shù)組60~259這個元素,就對應(yīng)10元優(yōu)惠券。

2.紅包

這里看到別人的帖子也是有3種挺好的實現(xiàn)方式:

  1. 隨機分配法
    將金額轉(zhuǎn)分避免浮點誤差,按順序為前 n-1 人隨機分配,隨機范圍為 [1, 剩余金額 / 總金額 90% 最小值],且保證分配后剩余金額≥剩余人數(shù)(每人至少 1 分);最后 1 人直接獲得剩余金額。缺點:先搶的人隨機范圍大,更容易搶到大額,分配不均

  2. 二倍均值法 --- 微信的手氣紅包用的就是這種
    金額轉(zhuǎn)分后,按順序為前 n-1 人分配,核心是每次隨機范圍為 [1, 剩余金額 / 剩余人數(shù) ×2 -1](分),保證每次隨機金額的平均值相等;最后 1 人得剩余金額。特點:分配更均衡,紅包金額與搶的先后順序無關(guān),避免兩極分化。
    https://cloud.tencent.com/developer/article/2599348?policyId=1004

  1. 線段切割法
    將總金額(分)看作線段,n 人搶則隨機生成 n-1 個不重復(fù)切割點(范圍 [1, 總金額]),切割點排序后,相鄰點的差值 / 首個點值 / 總金額減最后一個點值,即為每人的金額,最后轉(zhuǎn)元。特點:所有人生成金額的概率均等,手氣最佳的金額可能比二倍均值法更高,無先后順序差異。

https://xie.infoq.cn/article/55304d0b4216f7ddefdab36ef?utm_campaign=geektime_search&utm_content=geektime_search&utm_medium=geektime_search&utm_source=geektime_search&utm_term=geektime_search

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容