微信紅包已成為節(jié)日慶祝和親友互動的一種流行方式,但你是否曾疑惑,是什么決定了你搶到的紅包金額,特別是當(dāng)它只有0.01元時?騰訊云開發(fā)者社區(qū)最近揭秘了背后的算法。
微信紅包最初的隨機算法中,先搶者有更高的幾率獲得大額紅包,但為了避免搶紅包變成速度競賽,算法進(jìn)行了調(diào)整。
騰訊詳細(xì)探討了幾種主流的紅包分配算法。首先是普通隨機法,它基于剩余金額進(jìn)行隨機分配,但這種方法可能導(dǎo)致分配不均,讓后面的參與者幾乎搶不到紅包。為了避免這種情況,可以采用shuffle技術(shù)來打亂隨機數(shù)組,使分配看起來更隨機。
接著,文章介紹了二倍均值算法,它通過設(shè)置每個人紅包的最小值,并使用剩余金額的兩倍均值為隨機區(qū)間,從而實現(xiàn)更正態(tài)的分配,這種方法可以根據(jù)需要調(diào)整倍數(shù),以實現(xiàn)更扁平的正態(tài)分布。
第三種是線段分割算法,它通過將紅包總額視為一條線段,并在這條線段上隨機選擇若干點進(jìn)行分割,從而將紅包隨機分成多份。這種方法雖然更合理,但實現(xiàn)起來邏輯更復(fù)雜。
文章還提到了使用array_rand函數(shù)優(yōu)化線段分割算法的方法,這種方法可以確保隨機選擇的點不重復(fù),并且隨機區(qū)間包括首尾。
到自助洗車店,品百態(tài)人生。
GHS還是第一生產(chǎn)力
網(wǎng)絡(luò)炫富的上半場已經(jīng)過去,現(xiàn)在到來的是賽博哭窮下一階段。