網(wǎng)站制作NEWS
隨機(jī)紅包金額如何決定的
從工程角度來說,紅包分配算法需要簡單粗暴的實(shí)現(xiàn)。
有些人的算法過于復(fù)雜,第幾個(gè)人領(lǐng)取都要面面俱到的計(jì)算,考慮因素太多,工程實(shí)現(xiàn)上真的沒必要。
其實(shí)只需要按照如下框架即可:
1. 發(fā)紅包時(shí),按照設(shè)計(jì)的快速隨機(jī)算法,將紅包分好若干份。
2. 按照設(shè)計(jì)的評(píng)估算法,對(duì)得到的紅包分配進(jìn)行校驗(yàn)。
3. 如果校驗(yàn)不通過,如貧富差距過大,則重復(fù)隨機(jī)分配。
4. 如果若干次重復(fù),如5次,則停止重復(fù),就按照當(dāng)前分配。
5. 再有用戶請(qǐng)求紅包,直接隊(duì)列化請(qǐng)求,再從紅包序列中取出對(duì)應(yīng)編號(hào)紅包。
上述方案的優(yōu)勢是:
1. 只需“一次”計(jì)算。
隨機(jī)算法選擇簡單粗暴的即可,系統(tǒng)按照校驗(yàn)策略對(duì)其評(píng)價(jià),不滿足則有限次重復(fù),直到滿足或次數(shù)太多為止。
2. 此后就只有讀取。
后續(xù)操作完全是讀取緩存,無需密集計(jì)算。
那么是不是還有更簡單粗暴的方案呢?還是有的,那就是偽隨機(jī)序列查表法。
百萬千萬級(jí)別的紅包請(qǐng)求,如果每次都按照真隨機(jī)來計(jì)算,仍然會(huì)有不小的計(jì)算壓力。
索性預(yù)先計(jì)算得到若干偽隨機(jī)分配方案,調(diào)用時(shí)只需要隨機(jī)選擇一個(gè)即可。
舉例來說,有人的紅包是10元分配給5人,系統(tǒng)預(yù)先存有多種分配方案,如1,1,2,3,3,或1,1,2,2,4,請(qǐng)求時(shí)隨機(jī)選取一個(gè)方案即可。
當(dāng)然,各種組合未必能窮盡,但是只需要讓用戶在有限次操作中覺得這是隨機(jī)就夠了。
擴(kuò)展資料
微信紅包是騰訊旗下產(chǎn)品微信于2014年1月27日推出的一款應(yīng)用,功能上可以實(shí)現(xiàn)發(fā)“紅包”、查收發(fā)記錄和提現(xiàn)。
2014年4月14日,“安卓手機(jī)用戶只要用微信掃描身邊出現(xiàn)的紅色二維碼,通過騰訊應(yīng)用寶成功安裝其他應(yīng)用軟件,即可領(lǐng)取微信紅包。
2019年2月10日,微信官方發(fā)布2019年春節(jié)數(shù)據(jù)報(bào)告,除夕到初五,8.23億人次收發(fā)微信紅包。
設(shè)計(jì)簡單
在“微信紅包”這個(gè)功能的設(shè)計(jì)上,遵循了簡單的原則。發(fā)送方通過“新年紅包”公眾號(hào),選擇發(fā)送紅包的數(shù)量和金額,以及祝福的話語,通過“微信支付”進(jìn)行支付,就可以發(fā)送給好友;接收方則在打開后獲得相應(yīng)收益,只需要將儲(chǔ)蓄卡與微信關(guān)聯(lián),就可以在一個(gè)工作日后提現(xiàn)。2014年1月27日前,用戶在搶紅包之前,要先寫上祝福,然后才可以搶。在這之后,已經(jīng)改為先搶紅包再發(fā)送祝福的過程。
多重隨機(jī)標(biāo)簽