當前位置:首頁 » 操作系統 » 紅包的隨機演算法

紅包的隨機演算法

發布時間: 2022-09-14 06:32:12

『壹』 9個紅包尾數規律

紅包尾數沒有規律。微信紅包是系統隨機運算的,非要說有規律,那就是那串運算代碼。

微信紅包是騰訊旗下產品微信於2014年1月27日推出的一款應用,功能上可以實現發紅包、查收發記錄和提現。

2014年4月14日,「安卓手機用戶只要用微信掃描身邊出現的紅色二維碼,通過騰訊應用寶成功安裝其他應用軟體,即可領取微信紅包。

2019年2月10日,微信官方發布2019年春節數據報告,除夕到初五,8.23億人次收發微信紅包。

2013年8月,財付通正式與微信合作推出微信支付後,弓晨所在的基礎產品中心就開始不停地為微信支付研發新產品。

2013年11月,一次基礎產品中心的頭腦風暴中,開發人員希望開發類似於公司發紅包傳統的應用。

2014年1月10日,弓晨和同事開始了這個功能的技術開發。隨後弓晨在微信上拉了一個150多人的群,測試游戲效果和bug,其中包括財付通的員工、廣研微信團隊員工以及一些銀行的技術人員。

2014年1月24日,微信紅包測試版傳播速度極快,開發團隊忙著給微信紅包系統擴容,他們向騰訊公司申請,調來了10倍於原設計數量的伺服器,並抓緊時間修改微信紅包系統的最後細節。

2014年1月26日上線前,開發團隊把「發紅包」界面的一個按鈕名稱從「隨機紅包」改成了「拼手氣紅包」,並且改掉了先寫祝福語再搶紅包的流程。

『貳』 微信紅包的隨機演算法是怎樣實現的

一個紅包要分10份的話,就取10個0.01到0.99的隨機數,按照這10個數分配紅包,來的人隨機給。
當然10個隨機數的和不能超過1,做法可以這樣:
1. 維護一個當前剩餘比例Rest,初始1
2. 維護一個當前剩餘紅包份數Left,初始10
3. 每次算隨機數A的時候,要求A>0,並且A<=Rest*((Left+1)/2),保證隨機數的和在1之內,並且沒有哪個隨機數太大,更新Rest=Rest-A
4. 最後一個隨機數可以不按照3的要求,把所有的給它,也可以留做紅包的剩餘返回給用戶。

『叄』 微信紅包的隨機演算法是怎樣實現的

我們在一個20人的群中,自己發紅包以及結合其他人發出紅包的情況,整合成兩輪的數據。每次金額設置都是20塊並且有20個,第一輪是發了15次,第二輪是發了19次,總結成表格,然後為了避免突發的數據影響判斷,我們將兩輪數據雜糅從而生成了其他的三輪數據,一共是五輪數據。羅列如下表,高亮的數據為最佳手氣。每一列的數據最早搶到紅包的在最底端,越往上越晚搶。
從所有黃色的數值(最佳手氣金額)可看出,所有最佳手氣值都在平均值*2的前後附近(平均值=總金額/紅包總個數,這里平均值=20/20=1),事實上確實如此,可通過微信紅包分發演算法得到驗證,演算法具體見後文
然後我們選取部分數據開始製作散點圖。橫軸為1-20,分別表示搶到紅包的人的編號,隨遞增而越早。也就是20代表最早搶到的人。縱軸為金額。同樣的形狀顏色的點代表一次發紅包,然後我們抓取部分數據顯示為散點圖,越密集代表該順序位的用戶得到的金額越穩定。散點圖如下:

規律一:我們可以看到,所有紅包大多數金額分布在0.5到1.5元之間,顯示為圖中方框所示,大部分點都分布在這個位置。然後是順序位密集程度的對比,可以發現20、19,也就是最先搶到紅包的人,小圓圈所示基本的點都集中在小范圍,說明先搶紅包的人得到的金額會比較穩定,但同時最佳手氣的概率也比較低。大圓圈所示的是極不穩定,飄忽的金額分布,表示越晚搶紅包得到的金額會飄忽不穩,但同時,搶到最佳手氣等大金額的紅包概率也比早搶的高。
根據上面的分析,我們又寫了一個過濾計數函數,針對金額的分段的紅包個數進行統計:
比如2.0-2.5
得到如下金額分布:
折線圖:
規律二:絕大多數的紅包的金額都集中在1-1.5,也就是說20塊錢發20個紅包的金額分布集中在比平均數大一點點的附近,同時較大幅超過平均數金額的紅包大大少於低於於平均數的紅包數量。
那我們繼續擴大數據的規模,將幾輪數據的均值和標准差分別做成折線圖:
綜合上面各個折線圖的情況,我們可以得到越早搶紅包的標准差越小,越晚搶紅包的標准差越大,但同時,由均值和總額可以看出來,越早搶紅包的均值往往要更高,紅包金額得到最佳手氣概率也會相對較小,越晚搶紅包的人則得到最佳手氣等大手氣的概率更大。
為了得到更為趨近規律的曲線和規律,我們決定將兩輪真實數據合並起來,然後給出冪函數的趨近線(虛線),如下圖:
由於均值受極值波動影響較大,所以我們去除一些因為偶然差產生的極端點(圓圈的點)從而發現是遞增的趨勢。
規律三:可以很明顯的看到,均值是隨著搶紅包的越晚而緩慢遞減,標准差值同時也往上遞增,這個趨勢結合之前的分析,我們猜想,即標准差越大說明,領取到最大的紅包和最小紅包的風險越大,也就是說越晚搶標准差越大,對於冒險主義者來講是最好的,因為他有很大概率獲得最大的金額,但也大概率獲得最小的紅包,風險與收益並存;均值越大,說明每次都拿到一個不大不小的紅包,雖然獲得最小和最大金額紅包的概率很小,但起碼不虧本,也就是說越早搶,均值越穩定,這比較適合不喜歡冒險的人。
驗證預測結果:
21:24分發送預測結果到另一位同學微信:

隨後開始發紅包:

結果:
最佳手氣為第8個人且金額為1.13
與預測結果一致,規律基本正確!
總結:
(1)最佳手氣為1.13塊,根據我們推導的預測公式=總額/紅包總個數*2*隨機數(0-2的double數), 也就是說最佳手氣在總額/紅包總個數*2值的前後附近。這里我們判斷在0.8-1.3之間,推斷正確
(2)平均值為0.5元,0.5-0.8元的紅包有3個,小於0.5的紅包有6個,說明大於平均值的紅包個數多於小於平均值的個數。與我們的第二點預測完全正確
(3)最佳手氣位置:根據我們的散點圖發現,最先搶到紅包的人,得到的金額會比較穩定,但同時最佳手氣的概率也比較低。表示越晚搶紅包得到的金額波動較大,但同時搶到最佳手氣等大金額的紅包概率也比早搶的高。所以我們推斷,最佳手氣位置在最後20%-30%之間。
微信紅包隨機分發演算法c++模擬:
基本思路:每次搶到一個紅包金額等於:紅包剩餘金額/紅包剩餘個數*2*隨機數(0-1的double型),如果計算的結果小於等於0.01,則取0.01值
主要代碼:
double packages[50000];
double Luckiest_money=0;
void getPackage(int remainSize,double remainMoney){
srand((unsigned)time(NULL));
for(int i=0;i

『肆』 微信拼手氣紅包的隨機數是從哪裡來的

系統隨機的。

保證沒人肯定能分到0.01,所以如果你1元,分成100份,沒人都是平均的0.01

最後一人的錢是總額減前面已經隨機的金額。

其他從觀察來看沒有什麼規律,就是一個區間范圍內隨機。高的 很高,低的很低。

『伍』 微信紅包的隨機演算法是怎樣實現的

RT。我考慮了一個簡單的演算法:
比如100元,由10個人分,那麼平均一個人是10元錢。然後付款後,系統開始分份兒。
第一份:系統由0~10元之間隨機一個數,作為這一份的錢數,設x1。
第二份:剩下的錢(100-x1),系統由0~(100-x1)/(10-1)隨機一個數,作為這份的錢數,設x2
.。。。
第n份:剩下的錢(100-x1-x2-...-xn),系統由0~(100-x1-x2-...-xn-1)/(10-n)隨機一個數,作為這個份的錢數,設為xn

當用戶進來拿紅包的時候,系統由0~9之間隨機一個數,隨機到幾,就取第幾份紅包,然後將這個數存到list里。當之後的用戶抽到相同的隨機數時,則將這個數+1,如遇相同再+1,直至list滿,紅包發完。

『陸』 隨機紅包金額如何決定的

1.發紅包時,按照設計的快速隨機演算法,將紅包分好若干份。
2.按照設計的評估演算法,對得到的紅包分配進行校驗。
3.如果校驗不通過,如貧富差距過大,則重復隨機分配。
4.如果若干次重復,如5次,則停止重復,就按照當前分配。

『柒』 微信紅包的隨機演算法是怎樣的

1)紅包大小服從截尾正態分布,其好處是減少抽取紅包大小分布的方差,讓更多的人抽取的紅包在均值附近,同時仍給一小部分人抽取大紅包的機會,總體來說增加了紅包抽取人的積極性和游戲的公平性;
2)抽取紅包大小與抽取紅包先後無相關性。一種可能的紅包產生機制是:當發紅包者<准備紅包>的時候,程序自動依照截尾分布產生了相應大小,相應個數的紅包,然後隨機發給抽取紅包的人。同樣,這樣的一個隨機過程有助於增加游戲的公平性,也減少了紅包抽取人投機操作。

錢包錢數滿足截尾正態隨機數分布。大致為在截尾正態分布中取隨機數,並用其求和數除以總價值,獲得修正因子,再用修正因子乘上所有的隨機數,得到紅包價值。

這種分布意味著:低於平均值的紅包多,但是離平均值不遠;高於平均值的紅包少,但是遠大於平均值的紅包

『捌』 微信紅包的隨機演算法是怎樣實現的

5個隨機數,第一個就是紅包金額以內,第二個是,紅包金額減去第一個隨機數以內……以此類推

『玖』 微信搶紅包的尾數有規律嗎

摘要 親,很高興為您解答這個問題!就目前來看,微信的紅包演算法是沒有任何規律的,他的尾數是隨機分布,從0到9隨機的。

『拾』 微信紅包的隨機演算法是怎樣實現的

比如100元,由10個人分,那麼平均一個人是10元錢。然後付款後,系統開始分份兒。
第一份:系統由0~10元之間隨機一個數,作為這一份的錢數,設x1。
第二份:剩下的錢(100-x1),系統由0~(100-x1)/(10-1)隨機一個數,作為這份的錢數,設x2
.。。。
第n份:剩下的錢(100-x1-x2-...-xn),系統由0~(100-x1-x2-...-xn-1)/(10-n)隨機一個數,作為這個份的錢數,設為xn

當用戶進來拿紅包的時候,系統由0~9之間隨機一個數,隨機到幾,就取第幾份紅包,然後將這個數存到list里。當之後的用戶抽到相同的隨機數時,則將這個數+1,如遇相同再+1,直至list滿,紅包發完。

熱點內容
ftp儲存 發布:2025-05-16 17:04:08 瀏覽:504
家悅3010怎麼看電腦配置 發布:2025-05-16 17:02:38 瀏覽:885
sqlin傳參 發布:2025-05-16 17:02:37 瀏覽:889
python計算md5 發布:2025-05-16 17:02:32 瀏覽:427
看演算法頭疼 發布:2025-05-16 16:56:41 瀏覽:798
給定文件編譯成dll文件 發布:2025-05-16 16:45:05 瀏覽:730
熔噴機的配置有哪些 發布:2025-05-16 16:45:04 瀏覽:720
20149月二級c語言 發布:2025-05-16 16:22:29 瀏覽:961
恐怖月亮伺服器ip 發布:2025-05-16 16:18:42 瀏覽:723
java核心技術1 發布:2025-05-16 16:18:01 瀏覽:729