大数据分析:红包先抢好,还是后抢好

大数据 数据分析
本文用matlab程序,模拟微信给10个人发红包,设定次数1亿次,统计每个人抢到的红包,最佳手气和最差手气次数,用以分析红包是应该先抢还是后抢?

 本文用matlab程序,模拟微信给10个人发红包,设定次数1亿次,统计每个人抢到的红包,最佳手气和最差手气次数,用以分析红包是应该先抢还是后抢?

 

[[282061]]

算法解释

网上有人分析微信红包用的方法是两倍均值法,意思即:每个人抢的额度为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是我能想到红包较好的翻译了

  1. redluckymoney=zeros(100000000,10);%存放每次抢到的红包值 
  2. bestlucky=zeros(1,10);%统计每个人手气最佳次数 
  3. worstlucky=zeros(1,10);%统计每个人手气最差次数 

再进行计算,先进行内循环,发10个红包,统计手气最佳和手气最差,再进行外循环100000000次。

  1. for n=1:100000000 
  2.  for i =1:9 
  3.  redluckymoney(n,i)=rand(1)*((100-sum(redluckymoney(n,:)))/(11-i)*2); 
  4.  end 
  5.  redluckymoney(n,10)=100-sum(redluckymoney(n,:)); 
  6.   
  7.  [~,maxtemp]=max(redluckymoney(n,:)); %计算手气最佳次数 
  8.  bestlucky(1,maxtemp)=bestlucky(1,maxtemp)+1; 
  9.  [~,mintemp]=min(redluckymoney(n,:)); %计算手气最差次数 
  10.  worstlucky(1,mintemp)=worstlucky(1,mintemp)+1; 
  11. end 

最后是画图,单次抢到的钱数,如果你的电脑牛X的话,可以放到外循环中,展示动态。但计算速度会大大降低,1亿次计算时间会很长long long long……

  1. bar(redluckymoney(n,:),'FaceColor',[0.8 0.1 0],'EdgeColor',[1 1 0],'LineWidth',1.5); 
  2. ylabel('单次抢到红包/元','fontsize',14,'color','b','fontweight','bold');xlabel('参与人','fontsize',14,'color','b','fontweight','bold'); 
  3. title('单次红包钱数','fontsize',16,'color','b','fontweight','bold'); 
  4.  
  5. bar(sum(redluckymoney_sum),'FaceColor',[0.8 0.1 0],'EdgeColor',[1 1 0],'LineWidth',1.5); 
  6. ylabel('总共抢到红包/元','fontsize',14,'color','b','fontweight','bold');xlabel('参与人','fontsize',14,'color','b','fontweight','bold'); 
  7. title('总红包钱数','fontsize',16,'color','b','fontweight','bold'); 
  8.  
  9. bar(bestlucky,'FaceColor',[1 1 0],'EdgeColor',[1 0 0],'LineWidth',1.5); 
  10. ylabel('手气最佳/次','fontsize',14,'color','b','fontweight','bold');xlabel('参与人','fontsize',14,'color','b','fontweight','bold'); 
  11. title('手气最佳次数','fontsize',16,'color','b','fontweight','bold'); 
  12.  
  13. bar(worstlucky,'FaceColor',[0.5 0.5 0.5],'EdgeColor',[0 0 0],'LineWidth',1.5); 
  14. ylabel('手气最差/次','fontsize',14,'color','b','fontweight','bold');xlabel('参与人','fontsize',14,'color','b','fontweight','bold'); 
  15. title('手气最差次数','fontsize',16,'color','b','fontweight','bold'); 

统计出来,每个人总抢到的钱数如下图,总钱数基本一致,意味着无论先抢到,还是后抢到,经过多次后,抢到的钱是一样的。

大数据分析:红包先抢好,还是后抢好

总抢到的钱数

手气最佳和手气最差如下图:总体来看,最后抢的两位容易获得手气最佳,也容易获得手气最次差,更有可能是啥也抢不到……

大数据分析:红包先抢好,还是后抢好

手气最佳次数

大数据分析:红包先抢好,还是后抢好

手气最差次数

总结

  1. 无论先抢还是后抢,经过多次抢红包后,总金额是一致的,为了防止抢不到,建议还是先抢吧。
  2. 最后面两个人有最高概率成为手气最佳或手气最差。在能保证抢到红包的前提下,后抢有机率成为手气最佳。

 

 

责任编辑:华轩 来源: 今日头条
相关推荐

2019-04-24 13:07:16

HadoopSpark分布式架构

2015-03-03 13:57:36

春节微信红包大数据红包

2013-01-16 16:28:20

2013-02-25 11:04:39

Teradata 大数据天睿

2021-05-20 05:56:44

520微信红包封面

2012-11-09 13:34:48

投影机

2019-08-05 13:35:10

数据分析Python分析工具

2012-06-26 10:08:56

云计算大数据

2021-11-17 10:36:40

手机屏幕苹果

2021-07-26 07:47:37

前端自动抢票

2020-08-07 07:39:19

编程语言JavaPython

2018-03-27 10:15:58

微信红包个人信息

2014-03-17 09:45:04

大数据

2012-08-27 09:42:42

云计算云时代大数据

2024-11-06 10:30:22

Flink互联网物联网

2018-10-09 15:26:19

JavaPython语言

2018-09-26 14:17:00

编程语言JavaPython

2019-10-31 17:06:59

开发技能代码

2019-03-06 09:50:25

数据监控资损

2015-08-14 10:28:09

大数据
点赞
收藏

51CTO技术栈公众号