梦相随1006

版权归 梦相随1006 所有,未经 https://www.cnblogs.com/xin1006 作者许可,严禁转载

导航

微信抢红包算法详解 + Java语言实现

 

抢微信红包如何抢到最多,参见文章-清华博士毕啸天分析

 

 

微信红包内部的算法规则,每个人当前能抢到的金额,服从一个0.01到当前剩余均值两倍的左开右闭区间的均匀分布

 

举例说明: 假设有100元钱,分给10个人。那么第一个人获得红包大小怎么计算呢?100/10 = 10元。这是期望值。从0.01到20的区间中(其中20=10乘以2)随机抽取一个数,就是第一个人获得红包的大小;
                   假设第一个人获得了8元,那么剩下的92元平均分给9个人,这九个人平均获得红包大小为10.22元,那么第二个人的红包大小均匀分布于0.01元到20.44元的区间中;
                   依次类推。算法保证最后一个人至少抽到0.01元

 

基于以上算法思想,这里用Java语言进行封装实现(原创,转载请注明出处

 

1. 我们的红包类封装以下属性

2. 红包数据的有效性简单校验的方式;

 

两个原子方法(明细数据和最后的计算最佳)

 

 红包算法,其实就这一点点代码是真正的计算红包金额

 

 对外暴露被调用的方法

 

 main()方法调用简单测试

 

 运行测试结果: 我是不是小气了点 15个人分20块

 

若想直接要该源代码,请评论留下邮箱.

posted on 2019-11-20 14:44  梦相随1006  阅读(1059)  评论(2编辑  收藏  举报