大數據分析:玩微信時,紅包先搶,還是後搶好

本文用matlab程序,模擬微信給10個人發紅包,設定次數1億次,統計每個人搶到的紅包,最佳手氣和最差手氣次數,用以分析紅包是應該先搶還是後搶?

算法解釋

網上有人分析微信紅包用的方法是兩倍均值法,意思即:每個人搶的額度為0.01到總額度除以剩餘人數的兩倍。本文用此方法來判斷,

  1. 假定有10個紅包共100元,此時均值為10,第一個人(設定為P1)搶到的值為0.01-20元內任意值。設P1搶到12元;
  2. 此時還剩下9個紅包共88元,此時均值為9.77,第二個人P2搶到的值為0.01-19.55元內任意值。設P2搶到3元;
  3. 此時還剩下8個紅包共85元,此時均值為10.625,第三個人P3搶到的值為0.01-21.25元內任意值。
  4. 依次計算下去,到第9個人搶完後,剩下錢的全是最後一個人的。

代碼實現

本次計算,設定每次發10個紅包,共100元。首先生成三個矩陣用以存放紅包值、手氣最佳次數、手氣最差次數。redluckymoney是我能想到紅包最好的翻譯了

大數據分析:玩微信時,紅包先搶,還是後搶好

真有才

redluckymoney=zeros(100000000,10);%存放每次搶到的紅包值
bestlucky=zeros(1,10);%統計每個人手氣最佳次數
worstlucky=zeros(1,10);%統計每個人手氣最差次數

再進行計算,先進行內循環,發10個紅包,統計手氣最佳和手氣最差,再進行外循環100000000次。

for n=1:100000000
 for i =1:9
 redluckymoney(n,i)=rand(1)*((100-sum(redluckymoney(n,:)))/(11-i)*2);
 end
 redluckymoney(n,10)=100-sum(redluckymoney(n,:));
 
 [~,maxtemp]=max(redluckymoney(n,:)); %計算手氣最佳次數
 bestlucky(1,maxtemp)=bestlucky(1,maxtemp)+1;
 [~,mintemp]=min(redluckymoney(n,:)); %計算手氣最差次數
 worstlucky(1,mintemp)=worstlucky(1,mintemp)+1;
end

最後是畫圖,單次搶到的錢數,如果你的電腦牛X的話,可以放到外循環中,展示動態。但計算速度會大大降低,1億次計算時間會很長long long long……

bar(redluckymoney(n,:),'FaceColor',[0.8 0.1 0],'EdgeColor',[1 1 0],'LineWidth',1.5);
ylabel('單次搶到紅包/元','fontsize',14,'color','b','fontweight','bold');xlabel('參與人','fontsize',14,'color','b','fontweight','bold');
title('單次紅包錢數','fontsize',16,'color','b','fontweight','bold');

bar(sum(redluckymoney_sum),'FaceColor',[0.8 0.1 0],'EdgeColor',[1 1 0],'LineWidth',1.5);
ylabel('總共搶到紅包/元','fontsize',14,'color','b','fontweight','bold');xlabel('參與人','fontsize',14,'color','b','fontweight','bold');
title('總紅包錢數','fontsize',16,'color','b','fontweight','bold');

bar(bestlucky,'FaceColor',[1 1 0],'EdgeColor',[1 0 0],'LineWidth',1.5);
ylabel('手氣最佳/次','fontsize',14,'color','b','fontweight','bold');xlabel('參與人','fontsize',14,'color','b','fontweight','bold');
title('手氣最佳次數','fontsize',16,'color','b','fontweight','bold');

bar(worstlucky,'FaceColor',[0.5 0.5 0.5],'EdgeColor',[0 0 0],'LineWidth',1.5);
ylabel('手氣最差/次','fontsize',14,'color','b','fontweight','bold');xlabel('參與人','fontsize',14,'color','b','fontweight','bold');
title('手氣最差次數','fontsize',16,'color','b','fontweight','bold');

統計出來,每個人總搶到的錢數如下圖,總錢數基本一致,意味著無論先搶到,還是後搶到,經過多次後,搶到的錢是一樣的。

大數據分析:玩微信時,紅包先搶,還是後搶好

總搶到的錢數

手氣最佳和手氣最差如下圖:總體來看,最後搶的兩位容易獲得手氣最佳,也容易獲得手氣最次差,更有可能是啥也搶不到……

大數據分析:玩微信時,紅包先搶,還是後搶好

手氣最佳次數

大數據分析:玩微信時,紅包先搶,還是後搶好

手氣最差次數

總結

  1. 無論先搶還是後搶,經過多次搶紅包後,總金額是一致的,為了防止搶不到,建議還是先搶吧。
  2. 最後面兩個人有最高概率成為手氣最佳或手氣最差。在能保證搶到紅包的前提下,後搶有機率成為手氣最佳。


分享到:


相關文章: