大數(shù)據(jù)分析:紅包先搶好,還是后搶好
本文用matlab程序,模擬微信給10個人發(fā)紅包,設(shè)定次數(shù)1億次,統(tǒng)計每個人搶到的紅包,最佳手氣和最差手氣次數(shù),用以分析紅包是應(yīng)該先搶還是后搶?
算法解釋
網(wǎng)上有人分析微信紅包用的方法是兩倍均值法,意思即:每個人搶的額度為0.01到總額度除以剩余人數(shù)的兩倍。本文用此方法來判斷,
- 假定有10個紅包共100元,此時均值為10,第一個人(設(shè)定為P1)搶到的值為0.01-20元內(nèi)任意值。設(shè)P1搶到12元;
- 此時還剩下9個紅包共88元,此時均值為9.77,第二個人P2搶到的值為0.01-19.55元內(nèi)任意值。設(shè)P2搶到3元;
- 此時還剩下8個紅包共85元,此時均值為10.625,第三個人P3搶到的值為0.01-21.25元內(nèi)任意值。
- 依次計算下去,到第9個人搶完后,剩下錢的全是最后一個人的。
代碼實現(xiàn)
本次計算,設(shè)定每次發(fā)10個紅包,共100元。首先生成三個矩陣用以存放紅包值、手氣最佳次數(shù)、手氣最差次數(shù)。redluckymoney是我能想到紅包較好的翻譯了
- redluckymoney=zeros(100000000,10);%存放每次搶到的紅包值
- bestlucky=zeros(1,10);%統(tǒng)計每個人手氣最佳次數(shù)
- worstlucky=zeros(1,10);%統(tǒng)計每個人手氣最差次數(shù)
再進行計算,先進行內(nèi)循環(huán),發(fā)10個紅包,統(tǒng)計手氣最佳和手氣最差,再進行外循環(huán)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,:)); %計算手氣最佳次數(shù)
- bestlucky(1,maxtemp)=bestlucky(1,maxtemp)+1;
- [~,mintemp]=min(redluckymoney(n,:)); %計算手氣最差次數(shù)
- worstlucky(1,mintemp)=worstlucky(1,mintemp)+1;
- end
最后是畫圖,單次搶到的錢數(shù),如果你的電腦牛X的話,可以放到外循環(huán)中,展示動態(tài)。但計算速度會大大降低,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('單次紅包錢數(shù)','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('總紅包錢數(shù)','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('手氣最佳次數(shù)','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('手氣最差次數(shù)','fontsize',16,'color','b','fontweight','bold');
統(tǒng)計出來,每個人總搶到的錢數(shù)如下圖,總錢數(shù)基本一致,意味著無論先搶到,還是后搶到,經(jīng)過多次后,搶到的錢是一樣的。

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

手氣最佳次數(shù)

手氣最差次數(shù)
總結(jié)
- 無論先搶還是后搶,經(jīng)過多次搶紅包后,總金額是一致的,為了防止搶不到,建議還是先搶吧。
- 最后面兩個人有最高概率成為手氣最佳或手氣最差。在能保證搶到紅包的前提下,后搶有機率成為手氣最佳。