微信紅包派發機理之數學研究

春節搶紅包大家都玩過,現在搶紅包已經是我們每年過年的一個全民競技體育了,每個人搶到那幾分錢都特別地開心。但有段時間我發現了一個奇怪的現象,就是不管別人發多大的紅包,搶到我手裡的每次都只有幾分錢。而往往是搶紅包比較晚的那些人,他們可以搶到一個比較大的紅包。

這不科學吧?我說騰訊這麼大的一個公司,它沒有必要在算法上針對我呀。難道微信紅包先搶和後搶的規律是不一樣的?想到這個想法我非常地興奮,我覺得如果我最後能找到這個規律的話,我就能搶到我所有的同學都破產為止。

馬上又開始實驗了。我在周圍借來了四部手機,連上我自己的一部,總共是五部手機,建了個五人群開始發紅包。發紅包之前我先做了這麼一個先導實驗:N個人搶N+1分錢。

大家都學過抽屜原理,N個人搶N+1分錢就應該有一個人搶到2分錢,剩下的人都搶到1分錢。但實際做出來實驗結果不是這樣的,永遠只有最後那個人才能搶到那個2分錢。

微信紅包派發機理之數學研究

我做了非常多次實驗,結果肯定是對的。這個東西我把它命名為末位紅包抽屜原理。也就是N個人搶N+1分錢,則必有最後一個人搶到2分錢。這個收益率很可怕,他的收益率達到了前面一個人的兩倍。

這個結果雖然很簡單,但是它反映出來一個現象,就是微信紅包的內部算法肯定不是均勻的,先搶後搶一定是有區別的,而且貌似後搶會佔一點點優勢。

究竟是不是這樣呢?我做了一個進一步的實驗。

我用5個人搶50塊錢的紅包,發了150次,然後統計了每一次這5個人的數據,得到這樣750個數據。我把750個數據做在一張表上面。

微信紅包派發機理之數學研究

大家可以看出來,很驚訝的一個結果:5個人搶50塊錢的紅包,第一個人從來沒有超過20塊錢。做了150次,所以統計規律肯定是沒有問題的。第二個人從來沒有超過過25塊錢,等到第三第四第五的人他們能搶到的錢數慢慢才上去。

如果我們做一個統計學的分析,從平均值上來看,其實5個人搶到的錢差不多,都是在10塊錢左右,5個人搶50塊錢嘛。但如果從它的標準差,就是一個波動的情況,你會發現標準差越來越大。也就說第一個人可能只能搶到0到20,第四第五的人才能搶到0到50中間的任一個數字。

後來經過我仔細地研究,我終於發現了微信紅包內部的算法規則是什麼,每個人當前能搶到的金額服從一個0.01到當前剩餘均值兩倍的左開右閉區間的均勻分佈。

什麼意思呢?大概是說,5個人搶50塊錢,那平均每個人能搶到10塊錢。這個時候,第一個人搶的時候,他就只能搶到0—10×2也就是20塊錢。你想第一個人多不巧,他只搶到了2塊錢。那接下來的問題就變成了4個人搶48塊錢,這個時候平均每個人能搶到12塊錢。12的兩倍是24,第二個人最大能搶到就變成24塊錢。所以這個區間是一個不斷放大的過程。

最後等我發現了這個規律之後,你就可以做一些很無聊的腦洞。比如說你可以編程給自己發紅包,然後有一天我就給自己發了五千萬個紅包,得出來這樣一個規律。

微信紅包派發機理之數學研究

在五千萬個紅包下面這個規律就非常地明顯了。你可以看到第1個人永遠不會超過20,後面的這個規律分佈在慢慢平緩下來。

此外,通過編程你還可以統計一個現象,就是最佳手氣,這是很多人關注的一個點。最佳手氣在各個人各個位置的概率是均等的嗎?其實也不是。最後我發現最佳手氣的概率在5個人搶的時候是依次遞減的。

然後我的腦洞又發散了一下,我說難道5個人是這樣,那幾個人搶都是這樣嗎?於是我又做了一個編程,很無聊,就給自己發了兩億個紅包。最後做出來這樣一張圖。

微信紅包派發機理之數學研究

這張圖可以說是微信搶紅包裡面包羅萬象,它把所有的情況都概括了。它統計出了從3個人搶到27個人搶,如果你願意的話,我可以統計到任何多個人搶。從3個人到27個人,不同的人在搶紅包的時候,每一個位置搶到手氣最佳的概率這個變化究竟是什麼樣子的。

從這張圖的最後我大概得出一個結論,就是通常搶紅包的人比較多的時候,應該是越往後往往搶到手氣最佳的概率越大。所以以後我看到紅包都先憋一會兒,我等你們先把前面的小紅包都搶走了,憋到後面我再去把那個大的撈回來。

後來在這種思想的指導下,我就再也沒有搶到過紅包。

微信紅包派發機理之數學研究


分享到:


相關文章: